js巢尝试在catch块
问题描述:
我有一个承诺,等待承诺(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编写它?
答
有一种更好(更简单)的方式来写它没有尝试赶上。而且没有异常/等待的事情,也围绕诺言。只使用承诺本身。
var yourPromise = getCookie('key').catch(() => getCookie('scope').then(getKeyFromScope));
yourPromise
解决无论对key
,或由getCookie('scope')
*抛出的错误“嵌套仅在try块内允许” * - 你凭什么这个声明? – deceze