2017-06-06 125 views
0

我有一个承诺,等待承诺(getCookie)。如果getCookie('key')被拒绝,我尝试从另一个cookie(作用域)获取密钥。我认为是这样的:js巢尝试在catch块

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

*抛出的错误“嵌套仅在try块内允许” * - 你凭什么这个声明? – deceze

回答

2

有一种更好(更简单)的方式来写它没有尝试赶上。而且没有异常/等待的事情,也围绕诺言。只使用承诺本身。

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

yourPromise解决无论对key,或由getCookie('scope')