#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
, чтобы вернуть обещание. Покажите нам ее код, и мы, возможно, сможем вам с этим помочь.