gpt4 book ai didi

javascript - AngularJS - 无法获得 $q.reject 和工作

转载 作者:行者123 更新时间:2023-11-29 10:11:23 25 4
gpt4 key购买 nike

看看我的代码示例:

我已将其简化为(我认为是)最基本的要素,并且我正在设置错误 deferred.reject is not a function

angular
.module('myApp')
.service('myService', MyService);

MyService.$inject = ['$http', '$q'];

function MyService($http, $q) {
var self = this;

self.getResult = getResult;

function getResult(id) {
var deferred = $q.defer();

deferred = $http.get('my/api/method', { params: { id: id } })
.then(getResultCompleted)
.catch(getResultFailed);

function getResultCompleted(response) {
if (response.data.ID > 0) {
deferred.resolve(response.data);
} else {
deferred.reject(response);
}
}

function getResultFailed(response) {
deferred.reject(response);
}

return deferred.promise;
}
}

注意:我知道我可以通过简单地返回 $http 调用的结果来实现它,但是为了理解这些 promise 对象,我想看看我是否可以得到它通过声明并返回 deferred 来工作,如上所示

谢谢!

最佳答案

您正在创建自定义 promise 并从您的方法中返回它,但这意味着在处理它时您正在使用 $http.get 覆盖 deferred(自定义 promise 对象),它还返回具有 .then.catch 方法的 promise (没有 resolvereject 方法).由于该分配,您无法从 deferred 对象访问 .resolve.reject

deferred = $http.get('my/api/method', { params: { id: id } })

应该只是

$http.get('my/api/method', { params: { id: id } })

关于javascript - AngularJS - 无法获得 $q.reject 和工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32954508/

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