【发布时间】:2021-02-01 06:26:54
【问题描述】:
我正在为内部的 .map 循环和异步函数而苦苦挣扎。我将 request-promise 用于异步请求。
import * as rp from 'request-promise';
const testArray = ['one', 'two', 'three'];
const link = 'https://somelink.com/';
const test = testArray.map(async (elem) => {
console.log('before', elem);
await rp.get(link)
.then(async () => {
console.log('success');
});
console.log('after', elem);
});
Promise.all(test);
这段代码的输出:
before one
before two
before three
success
after one
success
after three
success
after two
我需要的是代码以正确的顺序执行,输出如下:
before one
success
after one
before two
success
after two
before three
success
after three
无法弄清楚我做错了什么。请帮忙。
【问题讨论】:
-
Promise.all将按顺序为您提供结果,但您既不会在地图中返回任何内容,也不会使用来自Promise.all的结果。就像 jfriend 所说的串行执行for of会很好。
标签: javascript promise async-await request-promise array.prototype.map