如何在Node.js回调函数之外提取变量的值

时间:2019-07-23 19:44:29

标签: node.js variables callback scope request

我无法在回调代码之外获得响应的值。它在外部返回undefined,而在回调中给出正确的结果。

function doCall(urlString, callback) {
    request.get(
        urlString,
        null,
        null,
        (err, data, result) => {                              
            var statusCode = result.statusCode;
            return callback(data);
        }
    );
}

const apiResponse = doCall(urlString, function(response) {
    console.log('***************************' + response); //Prints correct result
    return JSON.parse(response);
});

console.log('+++++++++++++++++++++++++' + apiResponse); //Prints undefined

2 个答案:

答案 0 :(得分:1)

function doCall(urlString) {
    return new Promise((resolve, reject) => {
        request.get(
            urlString,
            null,
            null,
            (err, data, result) => {
                if (error) reject(error);
                var statusCode = result.statusCode;
                resolve(data);
            });
    });
}

async function myBackEndLogic() {
    try {
        const result = await doCall(urlString);
        console.log(result);
       //return JSON.parse(result) if you want

    } catch (error) {
        console.error('ERROR:');
        console.error(error);
    }
}

myBackEndLogic();

Read this for more explanations

答案 1 :(得分:0)

如果要同步查找代码,请将所有内容包装在异步函数中:

(async (){
    async function doCall(urlString, callback) {
        return await request.get(urlString, null, null); // or store in a variable and return modified response
    }
    const apiResponse= await doCall(urlString, (response) => {
        console.log('response', response);
        return JSON.parse(response);
    });
    console.log('apiResponse', apiResponse);
})()
相关问题