【发布时间】:2019-06-29 13:31:43
【问题描述】:
这是我的代码的工作版本,它按预期返回所有内容:
***.then(r => r.json()).then(async r => {
for (let i = 0; i < r.length; i++) {
let pipeline = r[i];
pipeline.collapsed = true;
pipeline.levels = await this.getPipelineLevels(pipeline.id);
}
this.project.pipelines.items = r;
})
这是返回奇怪结果的“损坏”版本:
****.then(r => r.json()).then(r => {
let pipelines = r.map(async (value) => {
let levels = await this.getPipelineLevels(value.id);
return {...value, collapsed: true, levels: levels};
});
this.project.pipelines.levels = pipelines;
console.log(JSON.stringify(pipelines)) 在*.map() 之后出现在控制台中的奇怪输出:
[{"_c":[],"_s":0,"_d":false,"_h":0,"_n":false},{"_c":[],"_s":0,"_d":false,"_h":0,"_n":false}]
这里发生了什么?
【问题讨论】:
-
因为
.map实际上并不是await它通过了回调。 -
this.project.pipelines.levels = await Promise.all(pipelines);
标签: javascript vue.js async-await arrow-functions