Как я могу начать выполнять функцию после завершения асинхронной функции? Обещание не работает в этом случае - PullRequest
0 голосов
/ 01 мая 2019

Я хотел бы выполнить две функции одновременно.Но один из них использует значение из второго (асинхронная функция) в обратном вызове.

const asyncFunction = '' // it is fetch function and i need this function 
 // to complete before send() function perform
const send ='' // it sends information from asyncFunction , so it has to 
//  be perform after asyncFunction is completed
asyncFunction()
document.querySelector('.js-btn').addEventListener('click', send()) 
// I would like to listen immediately when page is load, and send an 
// information when asyncFunction is complete

Используя обещания, я могу прослушивать щелчок только после завершения asyncFunction, поэтому, если пользователь щелкнет btn, прежде чем asyncFunction будетВ завершение он не выполняет событие

Что я хотел бы сделать, так это немедленно прослушивать действие при загрузке страницы, но функция send () должна дождаться завершения asyncFunction, а затем выполнить.

Пожалуйста, помогите мне:)

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Возможные решения:

  1. отключить тело и показать «пожалуйста, подождите», пока asyncFunc не будет сделано.

  2. делает тело невидимым до тех пор, пока не будет выполнено asyncFunc.

  3. отключить кнопку отправки до тех пор, пока не будет выполнено asyncFunc.

  4. добавить анонимную функцию для кнопки отправки. Удалите эту функцию по щелчку и начните проверять каждые 10 мс, если асинхронность завершена, а затем выполняет send ()

  5. добавить два bools. let asyncFuncFinished = false; let sendFinished = false; теперь вы не можете добавить в asyncFunc и отправить if (asyncFuncFinished && sendFinished) send();

0 голосов
/ 01 мая 2019

В этом случае ваша функция отправки должна ждать, пока не будет выполнена asyncFunction. Таким образом, событие click должно быть установлено после выполнения asyncFunction. Это не имеет смысла, когда у вас нет результата asyncFunction, устанавливающего событие щелчка.

Вы можете установить событие щелчка при загрузке страницы, чтобы показать пользователю сообщение «Пожалуйста, подождите ...» (или что-то еще), и при обратном вызове asyncFunction (или использовать обещания) удалите это событие щелчка и установите другое для запуска функция отправки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...