gpt4 book ai didi

node.js - 在 Node js 应用程序中异步运行 request.post

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:49 24 4
gpt4 key购买 nike

我知道以前有很多类似的问题,但我已经尝试过每一个问题,但每次尝试仍然遇到这个特定的问题。所以我要做的是有一个名为 data.js 的文件,其中包含一个从 Web api 获取 json 数据并返回 Json 解析字符串的函数。我有另一个文件调用这个函数,我只是想在控制台上调试结果。但是每次我运行该函数时,我都会在控制台上得到“未定义”,即代码正在异步运行,并且值甚至在获取之前就已返回。这是我的代码:

数据.js

module.exports = {

holidays: function(x,y,z)
{

function intialize()
{

return new Promise(function(resolve, reject) {
Request.post({
"headers": { "content-type": "application/json" },
"url": //someurl,
"body": JSON.stringify({//some input})
}, function(err, resp, body) {
if (err)
{
reject(err);
}
else
{
resolve(JSON.parse(body));
}
})
})

}

var Request = require("request");
var json_content="";
var req = intialize();

req.then(function(result) {
console.log(result);//getting correct answer here
json_content=result;
//I know I've to return the value somewhere here but how do i do it
}, function(err) {
console.log(err);
});

return(json_content);
}
};

调用函数中的代码:

var h= require(__dirname+'/data.js');
console.dir(h.holidays('x','y','z'));//getting undefined

最佳答案

非常简单。您必须使用回调函数来获取结果。

module.exports = {
holidays: function(x,y,z,callback){
function intialize()
{
return new Promise(function(resolve, reject) {
Request.post({
"headers": { "content-type": "application/json" },
"url": //someurl,
"body": JSON.stringify({ })
},
function(err, resp, body) {
if (err)
{
reject(err);
}
else
{
resolve(JSON.parse(body));
}
})
})
}
var Request = require("request");
var json_content="";
var req = intialize();

req.then(function(result) {
console.log(result);
json_content=result;
callback(json_content); // sending response from here via callback variable
}, function(err) {
console.log(err);
});
return(json_content);
}
};

你必须得到类似的响应

var h= require(__dirname+'/data.js');
h.holidays('x','y','z',function(res){
console.log(res);
})

关于node.js - 在 Node js 应用程序中异步运行 request.post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50598256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com