gpt4 book ai didi

javascript - AngularJS — Promise 包含旧信息

转载 作者:行者123 更新时间:2023-12-03 08:39:57 24 4
gpt4 key购买 nike

这是我的第一个 Angular 项目,我正在构建一个天气应用程序,该应用程序从用户在输入字段中键入的特定位置获取天气数据。

我目前遇到的一个问题是,如果您输入一个位置,然后输入另一个位置,则延迟的 Promise 具有与上次相同的位置和天气信息(有两个异步调用)。

我把我的项目做了一个Plunker here 。如果您去那里打开控制台,输入两个位置,您会发现这些对象具有相同的信息。

我知道那个 Plunker 上有很多文件;但是,唯一相关的是:MainController.jsgetWeatherData.jssetWeatherData.jsgetLocationData.js .

以下是 getWeatherData 工厂的片段,它从 Forecast.io 获取天气数据并将其作为 Promise 返回(getLocationData 非常相似):

(function(){
angular.module("factories")
.factory("getWeatherData", ["$http", "$q", function($http, $q){
var deferred = $q.defer();
var factory = {
getData : function(coordinates){
$http.jsonp
(
"https://api.forecast.io/forecast/e1ab2c9f6b96acf85206c6def727a48e/" + coordinates + "?callback=JSON_CALLBACK"
)
.then(
function(response){
deferred.resolve(response);
}
);
},
promise : function(){
return deferred.promise;
}
};
return {
factory : factory
};
}]);
})();

最佳答案

工厂应该以这种方式使用:

.factory("getWeatherData", ["$http", "$q",  function($http, $q){
var deferred = $q.defer();
return {
getData : function(coordinates) {
$http.jsonp(
"https://api.forecast.io/forecast/e1ab2c9f6b96acf85206c6def727a48e/" + coordinates + "?callback=JSON_CALLBACK"
).then(function (response) {
deferred.resolve(response);
})
return deferred.promise
}
}
}])

关于javascript - AngularJS — Promise 包含旧信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33073381/

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