bluebird:从最后一次回调返回的访问值
bluebird: access value returned from last then callback
是否有某种方法可以检索从上一个 then
回调(或传递给初始 Promise.resolve()
/ resolve()
)return 编辑的内容?
const p = Bluebird.resolve().then(() => {
// I need to access this by inspecting `p` variable
return new Promise(r => setTimeout(r, 1000));
});
// or
const p = Bluebird.resolve(
// I need to access this by inspecting `p` variable
new Promise(r => setTimeout(r, 1000));
);
// or
const p = new Bluebird( resolve => {
resolve(
// I need to access this by inspecting `p` variable
new Promise(r => setTimeout(r, 1000));
)
});
通过检查 p
变量,我的意思是我想通过执行以下操作来检索最后的 return 值:
const intermediate = new Promise(r => setTimeout(r, 1000));
const p = Bluebird.resolve().then(() => {
return intermediate;
});
console.log( p.SOME_PROPERTY_OR_METHOD === intermediate ); // => true
p.SOME_PROPERTY_OR_METHOD
是同步调用 returning intermediate
值而不等待 promise 解析。
以new Promise(r => setTimeout(r, 1000));
为例进行解析,表示检查时p
会处于pending
状态。因此,我不能使用 .value()
(无论如何我都不想使用它,因为我不想要分辨率值)。
原因不重要,但如果您感兴趣,它的目的是决定是否取消承诺(作为我正在处理的一个抽象的一部分)。
没有简单的受支持方法可以使用 Bluebird 执行此操作。原因是从来没有人问过我们,我们现在对添加功能非常犹豫。
最接近的是使用监控功能,您可以通过以下方式打开它:
Promise.config({ monitoring: true });
然后在浏览器或 Node 中监听创建事件:
self.addEventListener("promiseChained", function(event) {
// event.type - "promiseCreated"
// event.details.promise - promise object that was chained to child promise
// event.details.child - child promise object
});
有关使用模式,请参阅 the documentation。
是否有某种方法可以检索从上一个 then
回调(或传递给初始 Promise.resolve()
/ resolve()
)return 编辑的内容?
const p = Bluebird.resolve().then(() => {
// I need to access this by inspecting `p` variable
return new Promise(r => setTimeout(r, 1000));
});
// or
const p = Bluebird.resolve(
// I need to access this by inspecting `p` variable
new Promise(r => setTimeout(r, 1000));
);
// or
const p = new Bluebird( resolve => {
resolve(
// I need to access this by inspecting `p` variable
new Promise(r => setTimeout(r, 1000));
)
});
通过检查 p
变量,我的意思是我想通过执行以下操作来检索最后的 return 值:
const intermediate = new Promise(r => setTimeout(r, 1000));
const p = Bluebird.resolve().then(() => {
return intermediate;
});
console.log( p.SOME_PROPERTY_OR_METHOD === intermediate ); // => true
p.SOME_PROPERTY_OR_METHOD
是同步调用 returning intermediate
值而不等待 promise 解析。
以new Promise(r => setTimeout(r, 1000));
为例进行解析,表示检查时p
会处于pending
状态。因此,我不能使用 .value()
(无论如何我都不想使用它,因为我不想要分辨率值)。
原因不重要,但如果您感兴趣,它的目的是决定是否取消承诺(作为我正在处理的一个抽象的一部分)。
没有简单的受支持方法可以使用 Bluebird 执行此操作。原因是从来没有人问过我们,我们现在对添加功能非常犹豫。
最接近的是使用监控功能,您可以通过以下方式打开它:
Promise.config({ monitoring: true });
然后在浏览器或 Node 中监听创建事件:
self.addEventListener("promiseChained", function(event) {
// event.type - "promiseCreated"
// event.details.promise - promise object that was chained to child promise
// event.details.child - child promise object
});
有关使用模式,请参阅 the documentation。