gpt4 book ai didi

javascript - Angular : Synchronize multiple independent promises

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

我正在开发一个 AngularJS 应用程序,其中 Factories(查询数据库)返回 promises。

对这些工厂的调用被封装在如下函数中:

function getUsers(id) { 
MyUserFactory.getUsers(id).then(function(data) {
$scope.mydata = data;
...lot of code...
})
}

function updateAcordingToUserAndWeatherOfTheDay(day) {
MyWeatherFactory.getWeather(day).then(function(data) {
if ($scope.mydata.likesRain) {
...
}
})
}

然后我有一个:

getUser(42); updateAcordingToUserAndWeatherOfTheDay(monday);

显然,如果 getUser() 完成的异步查询没有时间完成,我会在 updateAcordingToUserAndWeatherOfTheDay()$scope.mydata.likesRain

我知道我可以链接 .then() 来强制一个查询等待另一个但是这种重构会花费很多时间,我现在没有时间。

还有其他方法可以等待 promise 完成吗?至少在重构之前临时修复错误。现在我们的解决方案是一个 3 秒计时器...

最佳答案

重构这个非常简单,只需要方法return promise。

function getUsers(id) { 
return MyUserFactory.getUsers(id).then(function(data) {
$scope.mydata = data;
...lot of code...
})
}

function updateAcordingToUserAndWeatherOfTheDay(day) {
return MyWeatherFactory.getWeather(day).then(function(data) {
if ($scope.mydata.likesRain) {
...
}
})
}

getUsers(42).then(function() { updateAcordingToUserAndWeatherOfTheDay(day); });

这不需要更改任何现有代码(因为返回 promise 不会破坏任何现有基础架构),除了您需要修改的代码。

这是重构以使其工作的最快方法。

关于javascript - Angular : Synchronize multiple independent promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031154/

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