在 try catch 中处理 promise 错误第一级
handle promise error first level inside try catch
function testPromise(id) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
if (typeof id === 'number') {
resolve(id);
} else {
reject('error');
}
}, 500);
}
);
}
async function test(){
try{
testPromise(10)
for(let i=0 ; i<10000; i++){
....
}
.
.
}catch(err){
console.log(err)
}
}
test();
好的考虑上面的代码我想 运行 testPromise 函数异步所以如果我使用 await 语法 testPromise(10)
运行 首先然后循环代码 运行 如果,我不'异步使用await, testPromise(10)
运行 到目前为止一切正常,但是,如果testPromise遇到错误我应该如何处理?有什么方法可以使用 async-await 结构并在 try-catch 结构中处理这个错误?
我知道我可以使用 catch 函数 testPromise(10).catch(err =>{});
来处理错误,但我想知道在我的第一级 try-catch
中有什么方法可以处理它
你不能。
您可以将 try-catch
与 await
一起使用,或者在承诺中使用 catch
。
您应该考虑到,即使您的函数 (test
) 已经完成执行,也可能会抛出错误。
有关正确示例,请参阅@Bergi 的回答。
如果您想 运行 它与您的循环同时进行并正确处理来自 both 的错误(这必然包括等待两者),那么 Promise.all
是你唯一的选择:
async function test() {
try {
await Promise.all([
testPromise(10),
(async function() {
for (let i=0; i<10000; i++) {
…
}
…
}())
]);
} catch(err) {
console.log(err);
}
}
function testPromise(id) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
if (typeof id === 'number') {
resolve(id);
} else {
reject('error');
}
}, 500);
}
);
}
async function test(){
try{
testPromise(10)
for(let i=0 ; i<10000; i++){
....
}
.
.
}catch(err){
console.log(err)
}
}
test();
好的考虑上面的代码我想 运行 testPromise 函数异步所以如果我使用 await 语法 testPromise(10)
运行 首先然后循环代码 运行 如果,我不'异步使用await, testPromise(10)
运行 到目前为止一切正常,但是,如果testPromise遇到错误我应该如何处理?有什么方法可以使用 async-await 结构并在 try-catch 结构中处理这个错误?
我知道我可以使用 catch 函数 testPromise(10).catch(err =>{});
来处理错误,但我想知道在我的第一级 try-catch
你不能。
您可以将 try-catch
与 await
一起使用,或者在承诺中使用 catch
。
您应该考虑到,即使您的函数 (test
) 已经完成执行,也可能会抛出错误。
有关正确示例,请参阅@Bergi 的回答。
如果您想 运行 它与您的循环同时进行并正确处理来自 both 的错误(这必然包括等待两者),那么 Promise.all
是你唯一的选择:
async function test() {
try {
await Promise.all([
testPromise(10),
(async function() {
for (let i=0; i<10000; i++) {
…
}
…
}())
]);
} catch(err) {
console.log(err);
}
}