我需要做这样的事情:
<artifact>kg.apc:jmeter-plugins-json:pom:2.6</artifact>
我想使用const fn = () => new Promise((resolve, reject) => {
const timeout = setTimeout(() => reject('time out!'), 3000);
doSth().then((d) => {
clearTimeout(timeout );
resolve(d);
}).catch(reject);
});
fn().catch(console.log);
:
async&await
但是,我发现&#39;超时!&#39;嵌套函数抛出的错误不能在const fn = async () => {
const timeout = setTimeout(() => { throw new Error('time out!'); }, 3000);
return await doSth();
};
try {
fn();
} catch (e) {
console.log(e);
}
版本中捕获,如果一个分支失败,另一个分支将执行continue。在async
中是否有任何方法可以在嵌套函数中抛出错误并阻止整个队列?
async
版本没有错,我是什么拼图,如何捕获嵌套异步函数抛出的错误,以及当其中一个抛出时如何中断所有其他嵌套函数。
在Promise
版本中,很容易做到这一点,但如果没有Promise
async|await
可以做到这一点以及如何做到这一点?这是使用Promiser
的唯一方法吗?