首页 > 解决方案 > 功能未按顺序运行

问题描述

出于某种原因,在 node.js 中,代码没有按顺序运行。它甚至在从 function2 检索数据之前运行 console.log(data2)。我假设这是因为 node.js 异步运行。但是,我不太确定如何解决它。感谢您提前提供的所有帮助

function function1(app){
    app.post('/test', (req, res, next) => {
        const url = `url1`;
        request(url, function(error, response, body) {
            if(!error && response.statusCode == 200) {
                var data = JSON.parse(body);
                var data2 = function2(data.id);
                console.log(data2); //undefined  
                res.send(profileData);
            }
        });
    })
}

function function2(id){
    const url = `url2/${id}`;
    request(url, function(error, response, body) {
        if(!error && response.statusCode == 200) {
            var data = JSON.parse(body);
            console.log(data); //output correct data
            return data;
        }
    });
}

标签: javascriptnode.js

解决方案


function function1(app){
    app.post('/test', (req, res, next) => {
        const url = `url1`;
        request(url, async function(error, response, body) {
            if(!error && response.statusCode == 200) {
                var data = JSON.parse(body);
                var data2 = await function2(data.id);
                console.log(data2); //undefined  
                res.send(profileData);
            }
        });
    })
}


function function2(id) {
  const url = `url2/${id}`;
  return new Promise(function (resolve, reject) {
    request(url, function(error, response, body) {
      if(!error && response.statusCode == 200) {
        resolve(JSON.parse(body));
      } else {
        reject(error);
      }
    });
  });
}

推荐阅读