【发布时间】:2016-07-09 07:00:34
【问题描述】:
我有三个函数,每个函数执行一个 SQL 查询并返回一个数据数组;我知道这部分正在工作,因为我可以在返回数组之前执行 json.stringify 并且它按预期工作。问题是我需要等到这三个函数完成后再用它们做更多的事情。
我使用的每个函数都有相同的调用结构:
this.foo.makeFullJSON().then((fooStorage) => {
fooJSON = '{foo:[' + JSON.stringify(fooStorage) + ']}';
});
我知道我应该有一个承诺数组,然后将承诺推送给它,然后使用 Promise.all(),但我真的不知道我实际上必须执行的代码的哪一部分开。
编辑:清理一下,我调用的每个 makeFullJSON() 都会返回一个承诺(数组的)。我需要对结果数组做一些事情。
【问题讨论】:
-
你读过any documentation for
Promise.all()吗?你不明白哪个具体部分? -
我读过,但不知怎的,Promise.all() 返回了一个已解决的承诺数组。我猜你已经解决了这个问题。
-
Promise.all()返回一个新的主承诺。在该主 Promise 上调用.then()可以让您的回调访问从您传递给Promise.all()的所有 Promise 中实现的值(不是 Promise)数组。因此,在您的.then()处理程序中,您将获得一组已实现的值。 -
我认为这应该在我给出的答案中得到很好的说明。所有解析的值都从
promise.all传递给.then -
没错,但我认为答案是错误的,因为我对必须创建承诺然后将它们推送到一系列承诺中感到困惑;我没有意识到它可能只是 Promise.all([p1,p2,p3]) 在你的回答中。
标签: javascript json sqlite promise