gpt4 book ai didi

javascript - AngularJs - 延迟解析对象

转载 作者:行者123 更新时间:2023-11-28 12:22:19 25 4
gpt4 key购买 nike

我有一个根据 http.get 调用返回 bool 值的函数。

function checkValue (value) {
var defer = $q.defer();
var request = $http({
method: "get",
url: "someurl"
});

request.success(function (data) {
defer.resolve(data.response);

});
return defer.promise;
}

问题是返回值是这样的对象:

d {$$状态:对象}
$$状态:对象
状态:1
值:真
__proto__:对象
__proto__: d

我该如何解决这个问题?

最佳答案

是的,你的函数正在返回一个 Promise 对象。 $$state 属性属于 Promise 对象,由 Angular 在内部使用(如 $$ 前缀所示),因此不适合使用 Angular 的开发人员使用。更有趣的是,promise 对象有一个“then”方法,可用于附加在 Promise 得到解决时调用的处理程序。当与 Promise 相关的 defer 对象被解析时,Promise 也被解析。

因此,您可以将代码用作

checkValue.then(function (data) {
// This is called when the XHR response comes in and
// defer.resolve() is called in the checkValue function.
});

但是,有一个更好的方法。使用 promise 链。

这基本上消除了创建新延迟对象的需要。

function checkValue (value) {
return $http({
method: "get",
url: "someurl"
}).then(function (data) {
return data.response;
});
}

对于这篇文章来说,解释有关 Promise 如何工作的一切可能有点太多了。已有awesome works就这样完成了。

但是,基本上,$http 已经返回了一个 promise 。所以你可以只使用这个 promise 而不是创建一个新的 promise 。该函数的最终用法与上面的代码片段完全相同。

顺便说一句,.success() 处理程序已被弃用。因此,最好开始在您的应用程序上使用 .then()。

关于javascript - AngularJs - 延迟解析对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35298715/

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