2016-12-14 3 views
2

Я хочу сделать этот пример https://stackoverflow.com/a/33585993/1973680 синхронным.javascript async/wait в общем цикле

Это правильная реализация?

 let times= async (n,f)=>{while(n-->0) await f();} 

     times(5,()=> 
       myfunc([1,2,3],err => err) 
      ) 

myfunc сама функция асинхронной ожидает для различных других функций:

async myfunc(params,cb){ 

    await a(err => err) 
    await b(err => err) 
    await c(err => err) 

}` 
+1

'асинхронных/await' не делает код синхронно. Это просто позволяет более удобный способ написания асинхронного кода. И да, похоже, что это должно работать (почему бы вам просто не попробовать?), Хотя я бы предпочел написать 'async() => wait myfunc ([1,2,3], err => err)' , –

+1

Что вы подразумеваете под «make synchronous»? Или это опечатка, и вы имели в виду асинхронность? – Bergi

+1

Этот обратный вызов 'err => err', который вы передаете, но не использует нигде, не выглядит как правильное использование' async function '. – Bergi

ответ

6

ли это правильное применение?

Да. await работает в циклах, как вы ожидали, если это был ваш реальный вопрос.
Я бы, однако, рекомендую написать

async function times(n, f) { 
    while (n-- > 0) 
     await f(); 
}