Я смотрю на проблемы отмены асинхронной c цепочки ожидания в javascript, и я наткнулся на этот твит , где автор заявляет, что для отмены такой цепочки:
call1();
call2();
call3();
Вам нужно было бы обернуть их так:
try {
await Promise.race([
call1(),
isCanceled()
]);
}
catch (err) {
if (err instanceof CancelationError) return;
}
try {
await Promise.race([
call2(),
isCanceled()
]);
}
catch (err) {
if (err instanceof CancelationError) return;
}
try {
await Promise.race([
call3(),
isCanceled()
]);
}
catch (err) {
if (err instanceof CancelationError) return;
}
Какой тип делает с тех пор, как только вы go в await
, вы никогда не выйдете из этого, если не обещание либо разрешает или отклоняет.
Мне сказали, что вы можете отменить всю цепочку, используя генераторы, без переноса каждого вызова.
Может кто-нибудь объяснить, как вы можете свернуть всю цепочку, не упаковывая каждую асин c звоните