1 回答
TA贡献1859条经验 获得超6个赞
您是正确的,只要回调函数返回一个值,就会启动解析函数(哦,它们是函数)。
在你出现的情况下,该值返回了它的 'foo'
即使它不是一个拥有它的函数,它也相当于让一个函数返回一些东西。所以到那时一切都很好。
事实上,当回调函数有任何异步代码时它不起作用,这只是因为正如你所说,它返回未定义。该函数还没有完成运行,所以它返回。它不等它。我能想到的最简单的解决方案是将解决和拒绝对象传递给回调函数并从内部启动它们
例如
var promise1 = new Promise(function(resolve, reject) {
someFunction(resolve,reject);
});
function someFunction(resolve,reject){
var i = 0;
setTimeout(function() {
if(i===0){
reject(/**You can even pass it some variables here if u wanted*/);
} else {
resolve(/**Same here*/); // this should work just fine and it will sucesfully launch .then with whatever u need returned
}
}, 300);
}
添加回答
举报
