小编典典

在返回函数的变量之前,如何等待 promise 完成?

all

我仍在努力兑现承诺,但感谢这里的社区取得了一些进展。

我有一个查询 Parse 数据库的简单 JS
函数。它应该返回结果数组,但显然由于查询的异步性质(因此是承诺),函数在结果之前返回,给我留下了一个未定义的数组。

我需要做什么才能让这个函数等待承诺的结果?

这是我的代码:

function resultsByName(name)
{   
    var Card = Parse.Object.extend("Card");
    var query = new Parse.Query(Card);
    query.equalTo("name", name.toString());

    var resultsArray = [];

    var promise = query.find({
               success: function(results) {
               // results is an array of Parse.Object.
                             console.log(results);
                             //resultsArray = results;
                             return results;
               },

               error: function(error) {
               // error is an instance of Parse.Error.
                             console.log("Error");
               }
    });

}

阅读 63

收藏
2022-07-08

共1个答案

小编典典

不是返回 a ,而是返回resultsArray一个结果数组的承诺,然后then在调用站点上返回 - 这具有调用者知道函数正在执行异步 I/O
的额外好处。JavaScript中的并发编码基于此——您可能想阅读这个问题以获得更广泛的想法:

function resultsByName(name)
{   
    var Card = Parse.Object.extend("Card");
    var query = new Parse.Query(Card);
    query.equalTo("name", name.toString());

    var resultsArray = [];

    return query.find({});

}

// later
resultsByName("Some Name").then(function(results){
    // access results here by chaining to the returned promise
});

您可以在Parse 自己的博客文章中看到更多使用 parse Promise 和查询的示例。

2022-07-08