[英]Promise.all() after Promise.then() returning undefined values
我有以下代码
var pOne = new Promise(function(callback){
setTimeout(function(){
callback(false);
}, 100);
}).then(function(v){
console.log("pOne: " + v);
});
var pTwo = new Promise(function(callback){
setTimeout(function(){
callback(true);
}, 100);
}).then(function(v){
console.log("pTwo: " + v);
});
Promise.all([pOne, pTwo]).then(function(values){
console.log(values);
});
console.log(values)
在控制台中显示[undefined, undefined]
。 我对promise的理解是,我应该能够链接then()
方法。 链接是否不适用于Promise.all()
或这是一个错误。
注意:我使用的是promise-polyfill,但是在chrome上运行,因此从技术上讲,它是使用promise的本机chrome实现。
您的pOne和pTwo承诺不会返回任何内容。
尝试这个:
var pOne = new Promise(function(callback){
setTimeout(callback, 100, true);
}).then(function(v){
return v;
});
var pTwo = new Promise(function(callback){
setTimeout(callback, 100, false);
}).then(function(v){
return v;
});
Promise.all([pOne, pTwo]).then(function(values){
console.log(values);
});
pOne
和pTwo
必须使用一个值进行解析 ,以便将该值传递给Promise.all
的结果。
var pOne = new Promise(function(callback){
setTimeout(function(){
callback(false);
}, 100);
}).then(function(v){
console.log("pOne: " + v);
return v;
});
注意.then
回调内部的return v
。 这意味着pOne
承诺将使用该值进行解析 (在这种情况下, v
是先前的Promise解析为的值,或者在这种情况下为false
。
现在对pTwo
许诺做同样的pTwo
。
var pTwo = new Promise(function(callback){
setTimeout(function(){
callback(true);
}, 100);
}).then(function(v){
console.log("pTwo: " + v);
return v;
});
同样,我们必须从.then
回调函数返回一个值,以便Promise用一个值而不是未定义的值进行解析。
现在, Promise.all
将运行Promises,并且当(或如果)他们解决(在我们的情况下,他们总是这样做),它将从每个解决方案中获取已解决的价值,而Promise.all
承诺本身将用值解决 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.