gpt4 book ai didi

angularjs - 如何在成功处理程序之外使用 $http promise 响应

转载 作者:行者123 更新时间:2023-12-03 06:55:29 25 4
gpt4 key购买 nike

$scope.tempObject = {};

$http({
method: 'GET',
url: '/myRestUrl'
}).then(function successCallback(response) {
$scope.tempObject = response
console.log("Temp Object in successCallback ", $scope.tempObject);
}, function errorCallback(response) {

});
console.log("Temp Object outside $http ", $scope.tempObject);

我在 successCallback 中收到响应,但是未在 $http 之外获取 $scope.tempObject。它显示未定义

如何在$http之后访问response$scope.tempObject

最佳答案

But if I want to use $scope.tempObject after callback so how can I use it. ?

您需要从httpPromise链接。保存 httpPromise 并将值返回到 onFullfilled 处理函数。

//save httpPromise for chaining
var httpPromise = $http({
method: 'GET',
url: '/myRestUrl'
}).then(function onFulfilledHandler(response) {

$scope.tempObject = response

console.log("Temp Object in successCallback ", $scope.tempObject);

//return object for chaining
return $scope.tempObject;

});

然后在 httpPromise 之外

httpPromise.then (function (tempObject) {
console.log("Temp Object outside $http ", tempObject);
});

有关详细信息,请参阅AngularJS $q Service API Reference -- chaining promises .

可以创建任意长度的链,并且由于一个 promise 可以用另一个 promise 来解决(这将进一步推迟其解决),因此可以在链中的任何点暂停/推迟 promise 的解决。这使得实现强大的 API 成为可能。 1


基于 Promise 的异步操作说明

console.log("Part1");
console.log("Part2");
var promise = $http.get(url);
promise.then(function successHandler(response){
console.log("Part3");
});
console.log("Part4");

pic

“第四部分”的控制台日志不必等待数据从服务器返回。它在 XHR启动后立即执行。 “Part3”的控制台日志位于 $q service 保存的成功处理函数内。并在数据从服务器到达并且 XHR 完成后调用。

演示

console.log("Part 1");
console.log("Part 2");
var promise = new Promise(r=>r());
promise.then(function() {
console.log("Part 3");
});
console.log("Part *4*");


其他资源

关于angularjs - 如何在成功处理程序之外使用 $http promise 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35275451/

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