перенос функции обратного вызова и обычной функции в другую функцию обратного вызова?

#javascript #callback

#javascript #обратный вызов

Вопрос:

Этот раздел кода выполняется просто отлично …. однако сейчас я пытаюсь предотвратить запуск следующей строки кода до тех пор, пока не будет выполнена первая, но мне трудно понять, как это закодировать: (у меня голова идет кругом от обратного вызова)

Обе функции работают просто отлично, но checkRegister выполняется до завершения readFromFile — мне нужно, чтобы readFromFile был завершен первым перед запуском checkRegister:

 readFromFile('userdata.json', 0, yesFile(1), noFile(1051)) ;  //callback function
checkRegister() ;  // regular function
  

Комментарии:

1. readFromFile('userdata.json', 0, yesFile(1), noFile(1051), checkRegister) и вызвать 5-й аргумент в readFromFile реализации после его завершения.

2. Где функция обратного вызова в этом readFromFile вызове? Может быть, вы можете показать нам ее реализацию?

Ответ №1:

трудно сказать, какой подход лучше, не видя кода для readFromFile , но вы могли бы передать свой checkRegister в качестве аргумента readFromFile и вызвать его, когда он закончит чтение файла (обратный вызов):

 readFromFile('userdata.json', 0, yesFile(1), noFile(1051), checkRegister)
  

Или используйте Promises, и тогда вы сможете связать свою функцию checkRegister в цепочку :

 readFromFile('userdata.json', 0, yesFile(1), noFile(1051)).then(checkRegister)
  

Комментарии:

1. Мне нравится опция promise. Однако, как я могу это сделать с помощью javascript (не jQuery). Я пытаюсь сделать: var promise = new Promise(function но затем буквально застреваю при передаче readFromFile в resolve (появится пустая ошибка) … и затем отключаю это. будет ли это: new Promise(function(readFromFile('userdata.json',0,yesFile(1),noFile(1051),error).then(checkRegister)

2. @rolinger Вам придется переписать readFromFile , чтобы вернуть обещание. Покажите нам ее код, и мы, возможно, сможем вам с этим помочь.