首页 > 解决方案 > Node.js - 每当切换切换时调用异步函数

问题描述

在我的网站中,我有一个切换按钮,用于确定给定用户是否会收到来自给定来源的消息。每当更改此切换时,都需要调用异步函数。但是,如果切换切换,然后再次快速更改,我的程序必须等待之前的异步调用完成。这是我的两个调用异步函数的函数

_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
        }
    });
}

这两个函数都是类的成员,订阅和取消订阅函数是异步调用

标签: node.jsasynchronousamazon-sns

解决方案


您正在寻找代码关键部分的锁。如果您不想实现自己的,可以使用async-lock来完成此操作。

这将使第二个快速连续的请求在第一个请求释放之前无法进入代码的关键部分。


推荐阅读