2017-06-06 116 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')