【发布时间】:2016-11-05 09:32:17
【问题描述】:
我正在使用 promise 从 URL 中获取一些 JSON。返回的 JSON 包括返回 JSON 的新 URL 列表。由于嵌套的 Promise,我当前的实现失败了。
我需要做以下事情:
- 请求父 JSON url
- 请求每个子 JSON url
- 在每个子 promise 返回 JSON 后,我需要对子 JSON 和父 JSON 做一些事情。
我收到以下错误。
Warning: a promise was created in a handler at main.development.js:661:61 but was not returned from it
我的代码的简化版本:
myPromise(url)
.then(response => {
// process the data into an array of items
items.forEach(item => {
myPromise(item.url)
.then(response2 => {
// Do a thing here with data from response and response2
});
});
});
【问题讨论】:
-
Array forEach 不支持 Promise.. 有
promise.all,但如果说你使用像 Bluebird Promise 之类的东西,它的promise.map比promise.all更灵活 -
谢谢基思。我正在使用使用 Bluebird 的 request-promise,这很好!也就是说,我查看了 Promise.map bluebird 文档,并不太确定如何使用它来完成我需要的工作。你有任何文章或例子可以链接到我吗?
-
地图的工作方式与普通的 javascript 地图非常相似,但可以处理承诺。我会复制你的代码,然后粘贴为答案
标签: javascript node.js promise