javascript - 功能未按顺序运行
问题描述
出于某种原因,在 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;
}
});
}
解决方案
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);
}
});
});
}
推荐阅读
- python - Kivy:使用滑块更新 matplotlib 画布
- mysql - 根据列和不同列的值选择行
- c# - 无法调试 Service Fabric
- azure - 如何将文件上传到 Azure Web 应用虚拟目录
- node.js - 为什么不能用 ReactJS 渲染 HTML
- matlab - parfor 用于更新图形元素
- google-cloud-platform - 无法创建 Cloud Dataproc 自定义映像
- json - 如果嵌套数组在MongoDB中为空,如何删除主数组中的嵌套数组并删除整个数组?
- ios - 实现水平选择器视图的最佳方法
- php - 尝试使用 cmd 在 Laravel 5.6 中播种时出现语法错误,意外 ','