首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Promise时出现错误"Cannot read property 'then‘of undefined“

使用Promise时出现错误"Cannot read property 'then‘of undefined“
EN

Stack Overflow用户
提问于 2016-01-29 06:30:42
回答 2查看 1.9K关注 0票数 1

我正在使用promise并遵循another example,但是当我运行脚本时,我得到了一个错误的TypeError: Cannot read property 'then' of undefined。我的代码如下所示:

代码语言:javascript
运行
复制
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是无效的,但我不确定为什么?

EN

回答 2

Stack Overflow用户

发布于 2016-01-29 06:32:54

您没有从fetchSiteDetails返回一个promise,也没有使用arr.reduce产生一个值。尝试如下所示:

代码语言:javascript
运行
复制
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');
});

票数 2
EN

Stack Overflow用户

发布于 2016-01-29 06:49:09

这就像你想要Promise.all()已经提供的行为一样。尝试如下所示:

代码语言:javascript
运行
复制
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');
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35073396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档