gpt4 book ai didi

javascript - 嵌套异步函数未及时返回数据的问题

转载 作者:行者123 更新时间:2023-11-30 16:59:53 25 4
gpt4 key购买 nike

我依赖一个组件,即 Angular Material Autocomplete这需要一个返回值的函数。

不幸的是,我不确定如何在适当的时候从下面的嵌套异步函数(addressAutocomplete())返回一些东西:

$scope.chooseAddress = function (input) {
var results = [];
if (input) {
geolocationService.addressAutocomplete(input, function (data) {
results = data.predictions;//Will be fired asynchronously and too late...
});
}
return results;//I have to return something from my function...
};

当 addressAutocomplete 函数完成时,results var 已经返回,它当然是一个空数组...

有人可以帮忙吗?

最佳答案

您需要向 chooseAddress 的被调用者公开调用异步的事实。您可以通过返回 promise 来实现此目的.

将实现更新为

$scope.chooseAddress = function (input) {
var deferred = $q.defer();

if (input) {
geolocationService.addressAutocomplete(input, function (data) {
deferred.resolve(data.predictions);
});
} else {
deferred.resolve([]);
}
return deferred.promise;
};

然后你像这样调用chooseAddress

$scope.chooseAddress(input).then(function(result){
// the result will be available here
});

关于javascript - 嵌套异步函数未及时返回数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29076851/

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