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
回复 (6)
S
e 和 v 是回调函数的参数。
另外我认为在 then 里面传两个回调是反模式的,在最后 catch 才是好的模式,我会这样写: fn().then(console.log) .catch(console.error)
Z
如果 async 函数 f 有 return 值,该值就是这里的 v;
如果在函数 f 里抛出错误,就会将错误传到 e 里,就像你的例子里的 new Error(‘出错了’)
H
引用 steambape 和 v 是回调函数的参数。 另外我认为在 then 里面传两个回调是反模式的,在最后 catch 才是好的模式,我会这样写: fn().then(console.log) .catch(c...
@steambap e和v我还是没理解他们的出处,我可不可以随便写个参数都能当做回调的返回值
来自酷炫的 CNodeMD
H
引用 zbinlin如果 async 函数 f 有 return 值,该值就是这里的 v; 如果在函数 f 里抛出错误,就会将错误传到 e 里,就像你的例子里的 new Error(‘出错了’)
@zbinlin e和v我还是没理解他们的出处,我可不可以随便写个参数都能当做回调的返回值
来自酷炫的 CNodeMD
H
H
参与回复
登录后即可参与回复。登录