我希望在不编写任何服务的情况下获得异步调用的 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 ;
}) ;
答案 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将透明地跟随它,这意味着不会为此类响应调用错误回调。