小白问个关于async的问题
async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。
async function f() { throw new Error(‘出错了’); }
f().then( v => console.log(v), e => console.log(e) ) // Error: 出错了
不理解.then里的e和v是怎么来的
来自酷炫的 CNodeMD
4 回复
e 和 v 是回调函数的参数。
另外我认为在 then 里面传两个回调是反模式的,在最后 catch 才是好的模式,我会这样写: fn().then(console.log) .catch(console.error)
如果 async 函数 f 有 return 值,该值就是这里的 v;
如果在函数 f 里抛出错误,就会将错误传到 e 里,就像你的例子里的 new Error(‘出错了’)