我有一个'open'函数,我希望返回一个对调用方法的promise,这样在我的close函数中我解析了Promise
open(config){
this.closePromise = new Promise()
return this.closePromise
}
close(closeArgs){
this.closePromise.resolve(closeArgs)
...
}
...这样当我的'close'函数被调用时,我的调用方法会得到回调:
myService.open(myData)
.then( closeArgs => console.log('closed'))
我收到的错误如'Promise resolver undefined不是函数' 我在这里查看文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve但似乎没有任何东西符合我的需要。 (我开始怀疑我是否应该在这种情况下使用Observable,因为它可能更适合我的情况)。
使用Promise这是一个糟糕的情况还是我只是做错了? 感谢
答案 0 :(得分:1)
承诺没有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;
}