async function test() {
for (var i = 0; i < balance; i++) {
(async () => {
var a = await this.test1(i);
var b = await this.test2(a);
var c = await this.test3(b);
this.doThis(a,b,c);
})();
}
}
Итак, я пришел к выводу, что (async () => {})();
очень похож на старые добрые обратные вызовы.
function test() {
for (var i = 0; i < balance; i++) {
test1().call().then((a) => {
test2().call(a).then((b) => {
test3().call(b).then((c) => {
this.doThis(a,b,c);
});
});
});
}
}
Это правильно? по производительности я считаю, что они примерно одинаковы.
Я хочу использовать первый async/await
, но если я уберу (async () => {})();
, я обнаружу, что рендеринг в пользовательском интерфейсе будет медленнее по сравнению со вторым.
Do they have any differences?
Вы должны return
из обратных вызовов then
, чтобы ошибки распространялись правильно. Кроме того, они в основном равны.
What pattern should I follow?
Оба они звонки по принципу «выстрелил-забыл», на которые не стоит забывать обрабатывать ошибки!
I want to go with the
async/await
, but if I take out(async () => {})();
I find it slower
Конечно, потому что тогда вы await
входите в цикл, и он становится последовательным.
Если вы добавите несколько циклов / ifs, это легко сделать с первым шаблоном, но со вторым будет сложно. Некоторые говорят, что
async/awaut
— это синтаксический сахар только что, хотя это применимо к некоторым случаям (например, к вашему), но не относится к более сложным.