Javascript bluebird:last-then回调返回的访问值

Javascript bluebird:last-then回调返回的访问值,javascript,promise,bluebird,Javascript,Promise,Bluebird,是否有某种方法可以检索上一次回调返回的内容(或传递到initialPromise.resolve()/resolve()) 通过检查p变量,我的意思是我希望通过执行以下操作来检索最后的返回值: const intermediate = new Promise(r => setTimeout(r, 1000)); const p = Bluebird.resolve().then(() => { return intermediate; }); console.log( p.S

是否有某种方法可以检索上一次
回调返回的内容(或传递到initial
Promise.resolve()
/
resolve()

通过检查
p
变量,我的意思是我希望通过执行以下操作来检索最后的返回值:

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_或_METHOD
是同步调用,返回
中间值
而不等待承诺解析

使用
newpromise(r=>setTimeout(r,1000))进行解析
作为任意示例,指示检查时
p
将处于
pending
状态。因此,我不能使用
.value()


原因并不重要,但如果您感兴趣,这是为了决定是否取消承诺(作为我正在研究的一个抽象概念的一部分)。

蓝鸟没有简单的支持方法来实现这一点。原因是从来没有人问过我们,我们在这一点上对添加功能非常犹豫

您可以使用的最接近的功能是使用监控功能,您可以通过以下方式打开它:

Promise.config({ monitoring: true });
然后在浏览器或节点中侦听创建事件:

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
});

请参阅以了解使用模式。

通常,您会持有对先前承诺的引用,并可以
。然后
(或
.value
)它。此外,“我需要通过检查
p
变量来访问此变量”-“此”到底是什么?编辑后进一步解释
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
});