关于es6的promise中reject 与 await问题。有些不懂
发布于 5 年前 作者 847039386 4569 次浏览 来自 问答

首先 (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发生异常的时候,程序就不会继续运行了

try {
  let i = 1
  console.log(i++)
  throw new Error('我就想抛出个错误')
  console.log(i++)
} catch (error) {
  console.log(error)
}

只会输出一次i.后续的代码不会执行,直接跳到catch里面,这种处理方式会带来很多优点.

第二个问题就是你的res返回了失败的状态,有的时候请求超时也是很常见的.

没有那么多标准。当项目足够大,你自然可以对比出两种方案的优劣。而没有这样一副大背景,讨论优劣就意义不大了。

@yinrong 好的谢了。

@leemove 好的,谢谢。

回到顶部