Node.js - вызов асинхронных функций при каждом изменении переключателя - PullRequest
0 голосов
/ 14 февраля 2020

На моем веб-сайте есть кнопка переключения, которая определяет, будет ли данный пользователь получать сообщения из данного источника. Всякий раз, когда этот переключатель изменяется, должна вызываться асинхронная функция. Однако, если тумблер изменился, а затем он быстро изменился снова, моя программа должна ждать предыдущего асинхронного вызова fini sh. Вот мои две функции, которые вызывают асинхронные функции

_enable() {
    let params = determineSubscriptionParams(this.endpoint, this.level);

    SNS_CLIENT.subscribe(params, (err, data) => {
        if (err) {
            throw err;
        }
        else {
            // do stuff here
        }
    });
}

_disable() {
    let params = {
        SubscriptionArn: this.subscriptionArn
    }

    SNS_CLIENT.unsubscribe(params, (err, data) => {
        if (err) {
            throw err;
        }
        else {
            // do stuff here
        }
    });
}

Обе эти функции являются членами класса, а функции подписки и отмены подписки являются асинхронными вызовами

1 Ответ

0 голосов
/ 14 февраля 2020

Вы ищете блокировку для критических участков кода. Если вы не хотите реализовывать свой собственный, вы можете использовать asyn c -lock для выполнения sh этого.

Это сделает второй запрос, выполненный в быстрой последовательности, неспособным ввести критическую часть кода до того, как первый запрос его выпустит.

...