为了账号安全,请及时绑定邮箱和手机立即绑定

将承诺错误解决为高阶承诺可以吗

将承诺错误解决为高阶承诺可以吗

叮当猫咪 2021-03-28 21:18:06
将承诺错误解决为更高阶的承诺EX可以吗new Promise(async (resolve, reject) => {   //call async function   await async_function(resolve, reject);})const async_function = async (resolve, reject) => {  // some code   get_data_from_db     .then(data => resolve(null,data))     .catch(e => resolve(e, null)}get_data_from_db可以调用其他异步函数。拒绝并没有使错误返回更高的承诺
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

由于同样await适用于非承诺,因此您可以保存整个Promise构造:


const async_function = () => get_data_from_db(); 


(async()=>{

    try {

        //call async function

        const data = await async_function();

        console.log(data);


    } catch (err) {

        console.error(err.message);

    }

})();


查看完整回答
反对 回复 2021-04-08
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

可以兑现诺言吗


有时候没关系。将被拒绝的承诺视为“异步抛出”和它的障碍


但是您的代码是反模式的示例http://bluebirdjs.com/docs/anti-patterns.html#the-explicit-construction-anti-pattern


const async_function = async (resolve, reject) => {

  // some code 

  get_data_from_db

     .then(data => resolve(null,data))

     .catch(e => resolve(e, null)

}

您可以像这样重写它:


const async_function = () =>

  get_data_from_db()

     .catch(e => e) // it will be resolved with e


查看完整回答
反对 回复 2021-04-08
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信