Вы путаете JavaScript обещания обратного вызова с шаблонами проектирования обратного вызова из API стандартной библиотеки Node. Они не одинаковы.
Цель обещаний JavaScript состоит в том, чтобы иметь дело с долго выполняющимися процессами, где нам нужна некоторая способность выяснить, когда процесс завершится, чтобы продолжить выполнение следующего фрагмента кода.
Так что в Обратные вызовы Обещаний, о которых вы узнаете, существуют в трех состояниях: неразрешено , разрешено и отклонено .
По умолчанию Обещание существует в неразрешенном состоянии это означает, что вы только что сделали Обещание и ожидаете, что что-то произойдет, какой-то длительный процесс, такой как запрос Ajax или какое-либо другое событие, которое произойдет, как только оно произойдет, когда Обещание входит в одно из два других состояния, разрешены или отклонены .
Выше не является целью и функцией обратных вызовов стандартной библиотеки Node, которые используются внутри функций, которые являются частью API файловой системы. Эти конкретные функции, такие как read()
, readdir()
и т. Д., Имеют три аргумента, которые могут быть переданы ему, один необязательный, третий - обратный вызов, о котором вы говорите.
Шаблон для стандарта Node Обратные вызовы библиотеки при работе с функциями файловой системы должны предлагать два аргумента в этом аргументе обратного вызова, первый из которых всегда является объектом ошибки, err
, теперь не гарантируется, что ошибка произойдет, вместо этого, если что-то пойдет не так при открытии В каком-то файле (файлах) узел будет вызывать функцию обратного вызова с первым аргументом объекта err
.
Если ошибки нет, то первый аргумент вместо этого будет нулевым.
Теперь вторым аргументом функции обратного вызова будут данные, которые я на самом деле ищу.
https://nodejs.org/api/fs.html#fs_file_system
Видите ли, два разных обратных вызова, о которых вы говорите. Надеюсь, это поможет.