使用 Promise 时出现错误“无法读取未定义的属性‘then’”
2016-01-28
1915
我正在使用承诺并遵循
另一个示例
,但当我运行脚本时,我收到错误
TypeError:无法读取未定义的属性“then”
。我的代码显示如下:
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
,但我不确定为什么?
2个回答
您没有从
fetchSiteDetails
返回承诺,也没有使用
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');
});
Mike Cluck
2016-01-28
这就像您想要
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');
});
Jerome
2016-01-28