确保回调返回的值已保存到变量中

时间:2019-07-08 11:01:15

标签: javascript node.js asynchronous

如何使函数f2()等到f1()函数完成后再将函数返回的数据写入变量a中?

也许要使用异步/等待?我不太了解如何正确使用它。

const request = require('request');

const apiBaseURL = 'https://jsonplaceholder.typicode.com/';

function baseRequest(method, callback)
{
    let url = apiBaseURL + method;

    request(
    {
        method: "GET",
        url: url,
        json: true
    },

    function (error, response, body)
    {
        if (!error && response.statusCode === 200)
        {
            callback(body);
        }
        else
        {
            console.log("Error!");
        }
    })
}

function f1(method)
{
    baseRequest(
        method,
        function(body)
        {
            let data = [];

            for (let i = 0; i < body.length; i++)
                if (body[i].id <= 4)
                    data.push({id: body[i].id, email: body[i].email});

            console.log('data:', data);

            return data; // ?
        }
    );
}

function f2()
{
    let a = f1('comments?postId=1');
    console.log('a:', a); // undefined
}

f2();

a =>未定义

想要将数据从“数据”变量(函数f1(方法))保存到a

0 个答案:

没有答案