我正在使用promise并遵循another example,但是当我运行脚本时,我得到了一个错误的TypeError: Cannot read property 'then' of undefined
。我的代码如下所示:
var completedLinks = ["http://www.example.com/1","http://www.example.com/2","http://www.example.com/3"]
function fetchSiteDetails(arr){
arr.reduce(function(promise, email) {
console.log(email)
}, Promise.resolve());
}
fetchSiteDetails(completedLinks).then(function() {
console.log('all done');
});
我猜在fetchSiteDetails
上使用then
是无效的,但我不确定为什么?
发布于 2016-01-29 06:32:54
您没有从fetchSiteDetails
返回一个promise,也没有使用arr.reduce
产生一个值。尝试如下所示:
function log(message) {
document.body.innerHTML += message + '<br />';
}
function fetchSiteDetails(arr) {
return arr.reduce(function(promise, email) {
log(email);
return promise;
}, Promise.resolve());
}
fetchSiteDetails([1, 2, 3]).then(function() {
log('Done');
});
发布于 2016-01-29 06:49:09
这就像你想要Promise.all()
已经提供的行为一样。尝试如下所示:
var completedLinks = ["http://www.example.com/1","http://www.example.com/2","http://www.example.com/3"]
function fetchSiteDetails(arr){
return Promise.all(arr.map(function(email) {
return Promise.resolve(); // do whatever here, but return a promise !
}));
}
fetchSiteDetails(completedLinks).then(function() {
console.log('all done');
});
https://stackoverflow.com/questions/35073396
复制相似问题