当前位置: 首页 > 面试题库 >

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

傅琦
2023-03-14
问题内容

$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但没有得到$scope.tempObject外界$http。其显示undefined

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


问题答案:

但是,如果我想在回调后使用$ scope.tempObject,那么该如何使用它。?

您需要 从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服务API参考-
链接promises》

可以创建任何长度的链,并且由于一个承诺可以用另一个承诺解决(这将进一步推迟其解决方案),因此可以在链中的任何点暂停/推迟对承诺的解决。这样就可以实现功能强大的API。1个

基于承诺的异步操作的解释

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

图片

“ Part4”的控制台日志不必等待数据从服务器返回。XHR 启动 后立即执行。“ Part3”的控制台日志位于成功处理程序函数内部,该函数由$
q服务
保留,并
从服务器到达数据并且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*");


 类似资料:
  • 使用OkHttp实现异步RESTAPI客户机,工作正常。出于好奇,尝试将其转换为WebClient,观察奇怪的行为。 WebClient配置就是这样: 请求代码: 在单元测试中,作为参数传递给此方法的回调完成了一个Future,我等待它。因此,当我在IDEA中运行测试时,请求产生一个响应,响应的正文为空(内容长度:0),subscribe()中的lambda永远不会执行-使用println调试进行

  • 我有以下情况,我试图看看是否有解决方案: 两个Spring服务调用必须并行进行(一个是现有的服务调用/逻辑,另一个是新添加的服务调用) 然而,一条快乐的道路应该是直截了当的,当涉及到服务发出的错误时,应该遵守以下规则: > 如果其中只有一个失败,则通过另一个服务(异步)记录错误,并且API只返回成功服务的结果--这可以通过相应的线程来完成。 我的问题是,因为这些服务返回某个对象的列表,即使我使用并

  • 在我们的spring boot应用程序中,我们出于某种目的调用外部API,它将返回大约20mb的JSON数据作为响应。收到响应后,使用ObjectMapper将响应映射到POJO。 我们正在使用RestTemboard调用API并接收响应。 在Spring启动应用程序中处理大型响应数据而不会出现内存问题的最佳实践是什么? 谢谢

  • 有没有一种方法可以添加一个登录成功处理程序使用spall-oaut2? 我尝试使用基本身份验证过滤器,但它只过滤客户端凭据,而不是用户凭据。 还是需要创建自定义用户身份验证管理器? 蒂亚

  • 问题内容: 我正在将现有的应用程序移植到Flux,并且对一个主题有些困惑。假设我有几个API端点,它们返回两级或三级嵌套对象。 例如,可能返回架构的JSON响应 如您所见,有各种各样的用户处于不同的嵌套级别: 如果我想在获取文章时随时使用新数据进行更新,则必须编写一个怪异的方法来检查文章API响应上的所有嵌套实体。而且,将存在很多重复,因为还有其他API端点具有不同的架构,有时文章嵌入在用户内部(

  • 问题内容: 例如,我有10个从AJAX响应生成的标签: 我需要通过循环将onclick事件分配给每个事件: 这是行不通的,它仅将onclick分配给最后一个标签,并警告“ 11”。我该如何工作?我宁愿不使用jQuery。 问题答案: 您所有的处理程序都共享相同的变量。 您需要将每个处理程序放入一个单独的函数作为参数,以便每个处理程序都有自己的变量: