我遇到了一些与JavaScript Promise有关的问题,特别是在堆叠链中。
有人能够向我解释一下这些不同实现之间的区别(如果有的话!)吗?
实现1:
var serverSidePromiseChain;
serverSidePromiseChain = async().then(function(response) {
console.log('1', response);
return response;
}).then(function(response) {
console.log('2', response);
return true;
}).then(function(response) {
console.log('3', response); // response expected to be 'true'
return async3();
}).then(function(response) {
console.log('4', response);
return async4();
})
实现方式2
var serverSidePromiseChain;
serverSidePromiseChain = async().then(function(response) {
console.log('1', response);
return response;
});
serverSidePromiseChain.then(function(response) {
console.log('2', response);
return true;
})
serverSidePromiseChain.then(function(response) {
console.log('3', response); // response expected to be 'true'
return async3();
})
serverSidePromiseChain.then(function(response) {
console.log('4', response);
return async4();
})
实现方式 3
var serverSidePromiseChain;
serverSidePromiseChain = async().then(function(response) {
console.log('1', response);
return response;
});
serverSidePromiseChain = serverSidePromiseChain.then(function(response) {
console.log('2', response);
return true;
})
serverSidePromiseChain = serverSidePromiseChain.then(function(response) {
console.log('3', response); // response expected to be 'true'
return async3();
})
serverSidePromiseChain = serverSidePromiseChain.then(function(response) {
console.log('4', response);
return async4();
})
如果链的一部分返回一个值(在步骤2中为“true”),这是否会改变其行为?承诺是否需要所有返回的值都是异步承诺以保持其行为?
then
的顺序)。同样,最后一句话“这两个.then()处理程序将并行运行”更明显地表述错误:不,.then()处理程序不会并行运行,但它们安排的异步工作可能会。 - Don Hatch