javascript - 从函数中获取返回值然后在promise.all()中使用?

标签 javascript json sqlite promise

我有三个函数,每个函数都执行 SQL 查询并返回一个数据数组;我知道这部分正在工作,因为我可以在返回数组之前执行 json.stringify 并且它按预期工作。问题是我需要等到这三个函数完成后再用它们做更多的事情。

我使用的每个函数都有相同的调用结构:

this.foo.makeFullJSON().then((fooStorage) => {
    fooJSON = '{foo:[' + JSON.stringify(fooStorage) + ']}';
});

我知道我应该有一个 promise 数组,然后将 promise 推送给它,然后使用 Promise.all(),但我真的不知道我实际上必须执行代码的哪一部分上。

编辑:清理一下,我调用的每个 makeFullJSON() 都会返回一个 promise (一个数组)。我需要对结果数组进行处理。

最佳答案

在创建变量时将 Promise 分配给该变量,然后可以将该变量传递到 promise.all() .

由于我无法看到您的代码的完整实现,因此这里有一个工作的精简版本,说明了如何与 Promise 一起使用,并使用一些类似的名称进行模拟。

function makeFullJSON(time) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, time, [time]); // send back an array for simulation
  })
}

var p1 = makeFullJSON(1000);
var p2 = makeFullJSON(500);
var p3 = makeFullJSON(750);

p1.then(array => {
  console.log('Promise 1 complete', array);
  // Do other stuff with the return value
});

p2.then(array => {
  console.log('Promise 2 complete', array);
});

p3.then(array => {
  console.log('Promise 3 complete', array);
});

Promise
  .all([p1, p2, p3])
  .then(arrayOfAllResolvedValues => {
    // This array will contain values; the values from the
    // resolved promises in order of adding them to the promises array
    console.log('Array of resolved values:', arrayOfAllResolvedValues);
  });

关于javascript - 从函数中获取返回值然后在promise.all()中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38273913/

相关文章:

javascript - Angular 2 ngModel 不工作(仅限 javascript)

javascript - 错误 :id is already registered

json - 带有 Spring MVC 的 Tomcat 不压缩响应

sql - 用“ALL”代替“Group By”和“Having”查询

qt - 检查表是否存在

javascript - 如何使用 Javascript 格式化 HTML5 音频 currentTime 属性

javascript - 递归地遍历一个对象(树)

c# - Json反序列化C#

java - Android Volley解析Json响应为null

java - 如何在android中比较两个.db文件格式?