如何获得$ http API调用的承诺

时间:2016-02-27 10:59:10

标签: javascript angularjs promise angular-promise

我希望在不编写任何服务的情况下获得异步调用的 promise 。 我已编写某些API 来从JavaScript后端获取数据,但以下代码未在任何服务中编写。我想在另一个JavaScript文件中访问以下承诺。如何在不同的文件中访问承诺?

  var cust_Promise = $q.defer() ;    
  var apt_data={some data};
  $http.post(api,apt_data) 
    .success(function (response,status) {      
        cust_Promise.resolve('Success');
        return cust_Promise.promise ;              
    }) ;

1 个答案:

答案 0 :(得分:1)

PicMessage.objects.filter(which_pic__owner=user).order_by('-sending_time').first() 服务返回promises。

只需保存退回的承诺。

$http

这意味着AngularJS框架支持将它们传递给其他函数,将它们作为其他函数的值返回,并将它们分配给变量或将它们存储在数据结构中。

可以使用标准的var apt_data = {some data}; var promise = $http.post(url, apt_data); .then方法检索已完成的结果或拒绝的错误信息。

.catch

因为调用promise的var derivedPromise = promise.then (function onfullFilled(response) { $scope.data = results.data; //return for chaining return response; }).catch ( function onRejected(response) { console.log(response.statusText); //throw to chain rejection throw response; }); 方法会返回一个新的派生promise,所以很容易创建一个promise链。可以创建任何长度的链,并且由于可以使用另一个承诺(将进一步推迟其解析)来解决承诺,因此可以在链中的任何点暂停/推迟承诺的解析。这使得实现强大的API成为可能。 1

来自文档:

  

.then API基于$http服务公开的deferred/promise APIs。虽然对于简单的使用模式而言这并不重要,但对于高级用法而言,熟悉这些API及其提供的保证非常重要。

     

一般用法: 2

     

$q服务是一个函数,它使用一个参数 - configuration object - 用于生成HTTP请求, 返回promise

     

响应对象具有以下属性:

     
      
  • data - $http - 使用转换函数转换的响应主体。
  •   
  • status - {string|Object} - 响应的HTTP状态代码。
  •   
  • 标题 - {number} - 标题获取功能。
  •   
  • config - {function([headerName])} - 用于生成请求的配置对象。
  •   
  • statusText - {Object} - 响应的HTTP状态文本。
  •   
     

200到299之间的响应状态代码被视为成功状态,并将导致调用成功回调。请注意,如果响应是重定向,则XMLHttpRequest将透明地跟随它,这意味着不会为此类响应调用错误回调。

其他资源