关于es6的promise中reject 与 await问题。有些不懂
发布于 8 年前 作者 847039386 5541 次预览 最后一次回复是 8 年前 来自 问答
首先 (async function(){
var fun = function(bol){
return new Promise(function(res,rej){
bol ? res({success:true,data:'123'}) : rej({success:false,data:'123'})
})
}
try{
var a = await fun(false)
}catch(e){
console.log('error',e)
}
}()) 主动抛出异常跳到catch 里 如果这样的话假如fun是异步ajax 如果失败那么我还要在 catch里进行判定 可是如果我改成这样的写法
(async function(){ var fun1 = function(bol){ return new Promise(function(res,rej){ bol ? res({success:true,data:‘123’}) :res({success:false,}) }) }
var a = await fun1(false)
console.log(a)
}())
那么得到的值就直接是{success:false}如果这样的话我不需要用到reject 那么reject应用的场景是什么。。如果按照这样写的话。reject就用不到了,是不够标准?
4 回复
你这个不是异步和Promise的问题,你的问题在对
trycatch当js发生异常的时候,程序就不会继续运行了只会输出一次i.后续的代码不会执行,直接跳到
catch里面,这种处理方式会带来很多优点.第二个问题就是你的res返回了失败的状态,有的时候请求超时也是很常见的.
没有那么多标准。当项目足够大,你自然可以对比出两种方案的优劣。而没有这样一副大背景,讨论优劣就意义不大了。
@yinrong 好的谢了。
@leemove 好的,谢谢。