【问题标题】:using for loop inside promises在 Promise 中使用 for 循环
【发布时间】:2018-09-06 17:53:30
【问题描述】:

我有一个场景 第 1 步:我运行了一个循环并将数据推送到一个数组中 第 2 步:一旦我的第一个循环完成,我将开始第二个循环将数据推送到同一个数组中

我已经尝试过异步功能,这是我的示例用例

  var arr =[]; //declared globally
    async function myloop(){

    for(i=0;i<10;i++){
    arr.push(i);
    }

    }

   // Here is what I wanna do now
    myloop().then(function(){
    for(i=10;i<20;i++){
    arr.push(i)
    }
    })

我必须等到我的函数将所有数据推送到循环中,循环完成后我需要回到这里进行第二次运行

【问题讨论】:

  • 您是否从异步源推送任何数据?否则你将不需要承诺。那么您能否提供更多关于什么是数据以及不同数据点之间的关系的背景信息。
  • 您的问题是什么?什么不工作?
  • 需要更多信息 想要做什么
  • 我正在从两个集合的云数据库中提取数据,我试图在第一个循环期间提取重复项,然后在第二个循环期间将其添加到显示中。当我运行两个 for 循环时,它们异步运行,所以我使用了异步和承诺。但是在循环完成之前返回 Stilll 数组
  • 使用支持await的for..of循环

标签: javascript promise async-await


【解决方案1】:

上下文有点不清楚,但我假设您从两个集合接收两个数组,这将返回 Promise 中的数组。

假设你有这两个函数。

function dataBaseCallX() {
    // returns a Promise<Array>
}

function dataBaseCallY() {
    // returns a Promise<Array>
}

您想合并这两个结果对吗?然后在这里您可以使用 async-await 功能。我想这就是你想要的。

const resultA = await dataBaseCallX();  // An Array
const resultB = await dataBaseCallY();  // An Array

let combinedResults = resultA.concat(resultB);

如果出现错误,您可以简单地将其包装到 try catch 块中。

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 2016-12-13
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 2018-06-09
    相关资源
    最近更新 更多