gpt4 book ai didi

javascript - 火力地堡 : Wait For Async and Push to an array

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:41 25 4
gpt4 key购买 nike

我想获取指定的所有数据,并将其推送到数组,但此函数在过程完成之前返回回调。

function getRadiusPartner(){
getAllPartner()
.then(function (snap){
var location = [];
snap.forEach(function(user){
coordsRef.child(user).once("value", function(snapshot){
location.push(snapshot.val());
})
})
return Promise.all(location)
});
}

最佳答案

通常,如果您想等待 Promise,则不能使用 .forEach()。Javascript 和 Promise 无法以这种方式知道 forEach 何时完成。

现在您有几个选择:

  1. 您可以使用一个简单的 setTimeout 函数,等待一秒或更短时间,然后履行 promise 。

    function getRadiusPartner(){
    getAllPartner()
    .then(function (snap){
    var location = [];
    snap.forEach(function(user){
    coordsRef.child(user).once("value", function(snapshot){
    location.push(snapshot.val());
    })
    })
    setTimeout(function(){return Promise.all(location)},1500);
    });
    }
  2. 如果你有一个数组,你可以有一个 if 语句来检查循环是否位于 Array.length - 1,然后解决 promise

  3. 如果您知道要查找的内容,则可以在 foreach 循环中找到该项目后返回

     findItem = function (id) {
    var defer = $q.defer();
    snap.forEach(items, function (item) {
    if (item.id === id) {
    defer.resolve(item);
    }
    });
    return defer.promise;
    };

关于javascript - 火力地堡 : Wait For Async and Push to an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41379153/

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