创造承诺,返回"然后"。(或使用可观察)



我有一个函数'open',我想向调用方法返回一个承诺,以便在我的关闭函数中我解析承诺

open(config){
this.closePromise = new Promise()
return this.closePromise
}
close(closeArgs){
this.closePromise.resolve(closeArgs)
...
}

。这样我的调用方法在调用我的"close"函数时得到回调,如下所示:

myService.open(myData)
.then( closeArgs => console.log('closed'))

我收到诸如"未定义的承诺解析器不是一个函数">之类的错误我正在查看这里的文档 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve 但似乎没有什么适合我的需求。(我开始怀疑在这种情况下我是否应该只使用可观察量,因为它可能更适合我的情况(。

这是使用承诺的糟糕情况还是我只是做错了? 谢谢

承诺没有resolve方法。您需要将执行器回调传递给new Promise构造函数才能访问解析函数:

open(config) {
return new Promise(resolve => {
if (this.onClose) throw new Error("not yet closed, cannot open (again)");
this.onClose = resolve;
});
}
close(closeArgs) {
if (!this.onClose) throw new Error("not yet opened, cannot close (again)")
this.onClose(closeArgs);
this.onClose = null;
}

最新更新