js nest试试catch块

时间:2017-06-06 13:19:46

标签: javascript asynchronous promise try-catch

我承诺等待承诺(getCookie)。如果getCookie('key')被拒绝,我会尝试从另一个cookie(范围)获取密钥。我这样想:

  new Promise((resolve, reject) => {   
         var key, scope;  
         try {
             key = await getCookie('key');
             resolve(key)
         }
         catch(err){
             try {
                 scope = await getCookie('scope');
                 key = getKeyFromScope(scope);
                 resolve(key)
             } catch(err) {
                 reject(err);
             }
         }
    }

但是,只允许在try块中嵌套。有没有更好的方法用try / catch编写它?

1 个答案:

答案 0 :(得分:2)

有一种更好(更简单)的方式来编写它而不需要try-catch。没有async / await的东西也围绕着Promises。只使用Promises本身。

var yourPromise = getCookie('key').catch(() => getCookie('scope').then(getKeyFromScope));

yourPromise解析为keygetCookie('scope')

引发的错误