如何在JavaScript返回结果之前完成.map?

问题描述

我正在努力使用.map并等待。如何获取下面的内容,等待地图完成?

export async function buildDeviceArray(userIdList){ //userIdList is an array of ids
await userIdList.map(myFunction2)
return deviceArray1 // returns straight away,rather than waiting for the .map to complete

async function myFunction2(item) {
    let user =  await wixData.get("OurUsers",item)
    let device = await wixData.get("Devices",user.deviceDefault)
    let output =  { "label": device.deviceReference,"value": user.deviceDefault }
    if (user.deviceDefault) deviceArray1.push(output)
    console.log(deviceArray1);
    return
}

解决方法

这是如何将var originalArray = [1,2,3,4]; async function multiplyBy2(x) { await new Promise(r => setTimeout(r,5000)); // half second return 2*x; } async function run() { var promiseArray = originalArray.map(multiplyBy2) var answerArray = await Promise.all(promiseArray); console.log(answerArray); } run();与异步回调函数一起使用的示例。

get all listed products