所以,我们有这样的东西:
function thePromise(){
var thePromise = new Promise(function(){
var data = 'foo';
console.log(data);
resolve();
});
return thePromise;
}
thePromise().then( function(){
console.log('bar');
});
console.log('foobar');
人们期望输出的顺序是foo, bar, foobar
,但是它总是以foo, foobar, bar
结束。
除了使用setTimeout()
之外,还有什么方法可以确保在执行下一行代码之前完成.then()
中的代码吗?我正在尝试做一些数据库操作和与远程服务器同步的事情,所以使用setTimeout()
是一个有风险的提议,因为它可能需要不确定的时间来解决。
发布于 2018-07-11 01:53:14
简单地链接你的承诺:
var promise = new Promise(function(resolve, reject){
resolve(console.log('foo'));
});
var fctn = function(){
console.log('bar');
}
promise.then(fctn).then(function(){
console.log('foobar');
});
发布于 2018-07-11 03:40:33
然后()返回一个Promise,所以你可以链接:
thePromise().then( function(){
console.log('bar');
})
.then(function() {
console.log('foobar');
});
发布于 2018-07-11 02:01:48
https://stackoverflow.com/questions/51271363
复制相似问题