【发布时间】:2016-12-06 07:18:14
【问题描述】:
给定以下代码
class SomeClass {
async someFunc() {
const urlParameters = [0, 1, 2];
const batchAjaxResult = await urlParameters.map((parameter) => {
const result = await $.get(`someUrl/${parameter}`);
return {
parameter,
result
}
});
console.log(batchAjaxResult);
}
}
JavaScript 将返回一个已解析的 Promises 数组,而不是实际的 Promises 结果。
这可能是因为 Array.map() 没有被实现为 Promise。
是否有基于 Promise 的 Array.map 版本?
这个问题与How to return the response from an asynchronous call 不同,因为它是关于如何返回包装在Array.map 中的批处理响应。
【问题讨论】:
-
具体往this answer底部看
-
@Liam 我已经在使用提到的 ES7 async/await 语法。仅当 Array.map 覆盖它们时才会出现问题。
const X = await Array.map(...)似乎还没有实现。 -
你只能
await一个promise,而不是一个数组。试试await Promise.all(array)。
标签: javascript async-await babeljs es6-promise ecmascript-next