如何使我的async函数在angular中成为一个承诺

how to make my async function a promise in angular?

本文关键字:一个承诺 angular 何使 我的 async 函数      更新时间:2023-09-26

我在AngularJS工作,我有一个服务,其中post方法是:

var xhrService = {
  post: function(url, data) {
    xhr = new XMLHttpRequest();
    xhr.open("POST", url);
    xhr.send(data);
    return xhr;
}}

我希望能够像内置的(angular)$http服务一样使用此服务,并取得成功&错误方法。如果不使用其他库,那就太好了。

您至少需要$q服务来创建deferred,然后从函数返回deferred.promise。然后根据结果解决或拒绝它。

var deferred = $q.defer();
var req = new XMLHttpRequest();
req.open('GET', url);
req.onload = function() {
    if (req.status == 200) {
      deferred.resolve(req.response);
    }
    else {
      deferred.reject(req.statusText);
    }
}
req.onerror = function() {
  deferred.reject('error');
};
req.send();
return deferred.promise;