首页 > 解决方案 > node.js 当不同用户同时发出请求时返回相同的响应

问题描述

我有带有此类代码的 node.js Web 应用程序

import request from 'request';

export const promisedRequest = (options: any): any => {
    const deferred = new Promise((resolve: any, reject: any) => {
        return request(options, (error: any, response: any, body: any) => {
            if (error || !(response.statusCode >= 200 && response.statusCode <= 208)) {
                reject({ error: error || response });
            } else {
                resolve({ response, body });
            }
        });
    });
    return deferred;
};

它以这种方式调用

export const getProduct = (token: string, barcode: string): Promise<any> =>
    promisedRequest({
        url: `${process.env.API_URL}`,
        method: 'POST',
        json: true,
        headers: {
            'X-Token': token,
        },
        body: {
            barcode: barcode,
        },
    })
        .then(({ body }: any) => body.data[0])
        .catch((error: any): void => {
            const errorMessage = `Cannot get product: Product barcode: ${barcode}`;
            console.error(errorMessage, error);
            throw Error(errorMessage);
        });

我检查了浏览器并请求正确发送,但如果我几乎同时(约 2 毫秒)发出请求,我会为两个用户得到相同的响应。请帮我解决一下这个。非常感谢。

标签: node.jsrequest

解决方案


推荐阅读