Я просто пытаюсь улучшить свое понимание работы JavaScript Promises. Я создал следующую ситуацию:
LOG 'FOO'
RUN CALLBACK LOGGING 'CALLBACK'
LOG 'BAR'
Ожидайте, что все функции будут завершены немедленно (я имею в виду, что они не будут принимать чрезмерное/неизвестное количество времени, чтобы завершить выполнение операции async), чтобы вышеупомянутый порядок операций произошел в этом порядке.
Вы можете записать это следующим образом:
function foo(cb) {
// LOG 'FOO'
console.log('foo');
// RUN CALLBACK
cb();
}
function callback() {
// LOG 'CALLBACK'
console.log('callback');
}
foo(callback);
console.log('bar');
Это дает ожидаемый результат в соответствии с ситуацией, указанной в начале.
> foo
> callback
> bar
Вы также можете записать его следующим образом:
function foo() {
return new Promise((resolve) => {
// LOG 'FOO'
console.log('foo');
return resolve(null);
});
}
function callback() {
// LOG 'CALLBACK'
console.log('callback');
}
foo().then(callback);
// LOG 'BAR'
console.log('bar');
Эта ситуация дает следующий результат:
> foo
> bar
> callback
Вот где я неясен, так как я ожидаю, что foo
завершится немедленно, чтобы callback
запустил и запустил 'callback'
до bar
logs 'bar'