【发布时间】:2018-06-19 16:47:16
【问题描述】:
我有一个类,它返回几个像这样链接的方法:
class MyClass{
foo(){
if(condition) return this;
else throw;
}
bar(){
if(condition) return this;
else throw;
}
}
条件是根据类的内部状态可能为真或假的某些检查
这个想法是我可以执行几个这样的方法:
myInstance.foo().bar();
这样,如果任何方法中的任何条件失败,该语句都会抛出错误。
但是,现在我正在尝试检查需要解决承诺的条件:
class MyClass2{
asynCheck(){
myPromise.then((condition)=>{
... // returning a promise won't work
});
我想保持与以前相同的语法(添加等待/then),我不介意将 foo 和 bar 也更改为异步,只要以下语法有效:
await myInstance.foo().asyncCheck().bar();
有没有办法做到这一点?请注意,可能有多个 asyncCheck,并且可以按任意顺序调用
【问题讨论】:
-
有什么问题?如果
foo和bar保持同步,并且链中只有最后一个方法是[可能] 异步的,它将正常工作。即使最后一个方法是同步的,await也不会卡住它。 -
asyncCheck 可能在中间,async 方法不止一种。我将对其进行编辑以澄清
-
它必须是具有承诺的功能......否则你必须在每次检查之前赶上
-
或者你明小姐明白promise是如何工作的。尝试在 Promise 中返回 Promise,你会发现它会无缝链接
-
它不会链接,@Akxe,在最后一个例子中,如果asyncCheck中返回了一个promise,它将尝试执行返回的promise的方法栏,它不会存在
标签: javascript promise async-await