小白问个关于async的问题(已解决)
发布于 8 年前 作者 hfqf 3191 次浏览 来自 问答

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 回复

e 和 v 是回调函数的参数。

另外我认为在 then 里面传两个回调是反模式的,在最后 catch 才是好的模式,我会这样写: fn().then(console.log) .catch(console.error)

如果 async 函数 f 有 return 值,该值就是这里的 v; 如果在函数 f 里抛出错误,就会将错误传到 e 里,就像你的例子里的 new Error(‘出错了’)

@steambap e和v我还是没理解他们的出处,我可不可以随便写个参数都能当做回调的返回值

来自酷炫的 CNodeMD

@zbinlin e和v我还是没理解他们的出处,我可不可以随便写个参数都能当做回调的返回值

来自酷炫的 CNodeMD

@steambap 我现在懂了 这是默认的 范式

@zbinlin 我现在懂了 这是默认的 范式

回到顶部