码:
var x = new Promise((resolve, reject) => {
setTimeout( function() {
console.log( 'x done' );
resolve()
}, 1000 );
});
Promise.resolve().then(x).then((resolve, reject) => {
console.log( 'all done' );
});
输出:
all done
x done
预期产量:
x done
all done
JSfiddle:https://jsfiddle.net/puhbqtu0/1/
解决方法:
因此,当你想在一个系列中运行promises时,你应该将x转换为function并在之后调用它:
function x() {
return new Promise(resolve => {
setTimeout(() => {
console.log('x done');
resolve()
}, 1000);
});
});
Promise.resolve()
.then(x)
.then(() => console.log('all done'));
或最简单的变体:
x().then(() => console.log('all done'));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。