【发布时间】:2017-07-16 04:09:51
【问题描述】:
如何拒绝 async/await 函数返回的承诺?
例如原文:
foo(id: string): Promise<A> {
return new Promise((resolve, reject) => {
someAsyncPromise().then((value)=>resolve(200)).catch((err)=>reject(400))
});
}
翻译成async/await:
async foo(id: string): Promise<A> {
try{
await someAsyncPromise();
return 200;
} catch(error) {//here goes if someAsyncPromise() rejected}
return 400; //this will result in a resolved promise.
});
}
那么,在这种情况下,我该如何正确拒绝这个承诺呢?
【问题讨论】:
-
避免使用
Promiseconstructor antipattern!连第一个sn-p都应该写成foo(id: string): Promise<A> { return someAsyncPromise().then(()=>{ return 200; }, ()=>{ throw 400; }); } -
我认为将这个问题中的代码翻译成vanilla js是有帮助的,因为问题与类型签字无关。如果我这样做了,该编辑可能会被接受吗?
-
我认为这些类型有助于使其更易于理解 - 你确切地知道它在每个实例中返回的内容。
标签: typescript asynchronous es6-promise ecmascript-2017