如何处理多个Promise的结果? 在DoNext中说出DoA的结果a和DoB的结果
我读了https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/Using_promises 它引入了“ then”语法,该语法应取代“ doom的回调金字塔”,但是我不理解以下内容:
DoA.then(function(a){
return DoB(a)
})
.then(function(b){
DoNext(a,b);
})
在DoNext的调用中,a是未知的。我知道这是因为a仅在第2行的匿名函数中定义。但是,在“厄运的回调金字塔”中,我可以访问a,因为在该模式中,DoNext位于匿名函数内,该函数是DoA的成功回调。 我该如何在then-Syntax中处理这个问题?
答案 0 :(得分:0)
有多种方式处理多个Promise情况。
1-链承诺(虽然很丑)
DoA.then(a => {
DoB(a).then(.....)
})
.catch(error => console.log(error));
var promise1 = Promise.resolve(3);
var promise2 = 42;
var promise3 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
});
// expected output: Array [3, 42, "foo"]
3- async function(但请阅读详细信息)
(async () => {
const a = await DoA(); // DoA must be a Promise
const b = await DoB(a); // DoB must be a Promise
// rest of the code
})();