$q 通知和-1 承诺状态
$q notify and -1 promise state status
根据我在 $q 源代码中看到的,promise.$$state.status
可以等于 -1。这在某种程度上与通知功能有关。
在什么条件下 promise state status 可以等于 -1,它在 Angular promise 生命周期中的位置是什么?
返回angular源代码:
$$resolve: function(val) {
var then, fns;
fns = callOnce(this, this.$$resolve, this.$$reject);
try {
if ((isObject(val) || isFunction(val))) then = val && val.then;
if (isFunction(then)) {
this.promise.$$state.status = -1;
then.call(val, fns[0], fns[1], this.notify);
} else {
this.promise.$$state.value = val;
this.promise.$$state.status = 1;
scheduleProcessQueue(this.promise.$$state);
}
} catch (e) {
fns[1](e);
exceptionHandler(e);
}
}
只要 promise 未解决,它看起来就是 -1。如果返回的是承诺 (if (isFunction(then))
),它将保持 -1 状态并触发返回的函数。如果返回的不是 promise,那么它的状态将是 1.
我通过用另一个承诺解决一个承诺获得了状态 -1。
x = $q.defer();
y = $q.defer();
x.resolve(y.promise);
根据代码,x
将状态更改为 -1 以等待解析承诺 y
。但是在解析 y
之后的事件,x
状态仍然是 -1.
跟踪所有 Promises()
的链后,这些 Promises()
与 resolves 绑定在一起 - 最终的 promise 结果只有 promise.then
最后一个实际解决的结果 (isObject(val)
)。
在这种情况下,只有在以下情况下才能获得-1状态:
- 您在链
中创建了 link 到非最终 Promise()
- 您使用了 link 的
status
,它始终为 -1
promise 生命周期中的 -1 部分只是确定链中的当前 promise 不是最终的和任何下一个 promise。这可以在 function done()
中找到,其中为 stack of promises 创建了一个 resolution
并用之前的 $$values
更新了它。
在链状态 0 或 1 指向最终承诺将作为最终点。
根据我在 $q 源代码中看到的,promise.$$state.status
可以等于 -1。这在某种程度上与通知功能有关。
在什么条件下 promise state status 可以等于 -1,它在 Angular promise 生命周期中的位置是什么?
返回angular源代码:
$$resolve: function(val) {
var then, fns;
fns = callOnce(this, this.$$resolve, this.$$reject);
try {
if ((isObject(val) || isFunction(val))) then = val && val.then;
if (isFunction(then)) {
this.promise.$$state.status = -1;
then.call(val, fns[0], fns[1], this.notify);
} else {
this.promise.$$state.value = val;
this.promise.$$state.status = 1;
scheduleProcessQueue(this.promise.$$state);
}
} catch (e) {
fns[1](e);
exceptionHandler(e);
}
}
只要 promise 未解决,它看起来就是 -1。如果返回的是承诺 (if (isFunction(then))
),它将保持 -1 状态并触发返回的函数。如果返回的不是 promise,那么它的状态将是 1.
我通过用另一个承诺解决一个承诺获得了状态 -1。
x = $q.defer();
y = $q.defer();
x.resolve(y.promise);
根据代码,x
将状态更改为 -1 以等待解析承诺 y
。但是在解析 y
之后的事件,x
状态仍然是 -1.
跟踪所有 Promises()
的链后,这些 Promises()
与 resolves 绑定在一起 - 最终的 promise 结果只有 promise.then
最后一个实际解决的结果 (isObject(val)
)。
在这种情况下,只有在以下情况下才能获得-1状态:
- 您在链 中创建了 link 到非最终
- 您使用了 link 的
status
,它始终为 -1
Promise()
promise 生命周期中的 -1 部分只是确定链中的当前 promise 不是最终的和任何下一个 promise。这可以在 function done()
中找到,其中为 stack of promises 创建了一个 resolution
并用之前的 $$values
更新了它。
在链状态 0 或 1 指向最终承诺将作为最终点。