gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:39:06 24 4
gpt4 key购买 nike

我仍在为 promise 而苦苦挣扎,但感谢这里的社区,我取得了一些进步。

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

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

这是我的代码:

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");
}
});

}

最佳答案

不是返回一个 resultsArray,而是返回一个结果数组的 promise ,然后 then 在调用站点上返回它 - 这有一个额外的好处,即调用者知道该函数正在执行异步 I/O。 JavaScript 中的编码并发性基于此 - 您可能需要阅读 this question获得更广泛的想法:

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's own blog post about it 中看到更多使用带有查询的解析 promise 的示例。 .

关于javascript - 在返回函数变量之前如何等待 promise 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27759593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com