Как я могу узнать, когда выполняется обратный вызов

Как уже упоминалось, знак доллара предназначен для использования с помощью механически сгенерированного кода. Однако это соглашение было нарушено некоторыми чрезвычайно популярными библиотеками JavaScript. JQuery, Prototype и MS AJAX (AKA Atlas) используют этот символ в своих идентификаторах (или как полный идентификатор).

Короче говоря, вы можете использовать $ всякий раз, когда захотите. (Переводчик не будет жаловаться.) Вопрос в том, когда вы хотите его использовать?

Я лично его не использую, но думаю, что его использование действительно. Я думаю, что MS AJAX использует его для обозначения того, что функция является псевдонимом для некоторого более подробного вызова.

Например:

var $get = function(id) { return document.getElementById(id); }

Это похоже на разумное соглашение.

0
задан Cristian Coroian 17 January 2019 в 17:12
поделиться

3 ответа

Вы можете добавить некоторый закрытый флаг непосредственно перед оператором возврата выполнения метода, например,

abcCallback() {
  // code 
  abcCallback.__executed__ =  true;
}

Затем вы можете получить состояние выполнения, проверив abcCallback.__executed__. Также не забывайте сбрасывать этот флаг всякий раз, когда вы хотите начать этот процесс.

0
ответ дан ABOS 17 January 2019 в 17:12
поделиться

RxJS является частью Angular.
Может быть, вы можете использовать его для создания объекта BehaviourSubject при выполнении обратного вызова.
После этого вы должны подписаться на «событие».
Сайт RxJS: https://rxjs-dev.firebaseapp.com/
Визуальные пояснения RxJS: https://rxmarbles.com/

[110 ]
0
ответ дан Bruno Desprez 17 January 2019 в 17:12
поделиться

Вы можете определить переменную вне функции обратного вызова и изменить ее в конце функции обратного вызова. Состояние этой переменной покажет, завершен ли обратный вызов.

let isCallbackExecuted = false;
let abcCallback = () => {
  // do something
  isCallbackExecuted = true;
};
Promise.resolve().then(abcCallback);
// isCallbackExecuted is true if callback is finished
0
ответ дан grumbler_chester 17 January 2019 в 17:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: