nodejs中request.post如何改为同步执行?

发布于 2022-09-01 19:55:55 字数 760 浏览 28 评论 0

send.js模块代码:

var request=require('request');
var sendUrl=function(req,url){

console.log('请求参数:');
console.log(req.body);
var opts={
    url:url,
    form:req.body,
    headers: {
        'Cookie': 'JSESSIONID='+req.session.resPonseId
    }
};
var results={status:false,message:'调用接口失败'};
console.log(opts.url);
request.post(opts,function(err,response,body){
    console.log('返回结果:');
    if(!err && response.statusCode == 200){
        if(body!=='null'){
            results=JSON.parse(body);
        }
    }
})
return results;
console.log(results)

}
module.exports=sendUrl;

其它模块中调用 :
在其它模块处调用:
var results=sendUrl(url);
一直会显示:{status:false,message:’调用接口失败’}
如何把request.post改成同步的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

眼趣 2022-09-08 19:55:55

request.post 是不能改成同步的。

但是你可以借助异步流程控制库来完成你的需求。
比如我用的when.js
//访问a网站

function a(){
    return when.promise(function(resolve,reject){
        request.post(opt,function(err,result){
            if(err){reject(err)}else{resolve(result)}
        })
    })
}
a.then(function(result){
    //result返回的结果
}).catch(function(err){
    //err这是错误返回
})
三岁铭 2022-09-08 19:55:55

用Promise。下面使用了ES7的async-await。

// 定义Promise函数
function post(opts) {
    return new Promise ((resolve, reject) => {
        request.post(opts,function(err,response,body){
            console.log('返回结果:');
            if(!err && response.statusCode == 200){
                if(body!=='null'){
                    results=JSON.parse(body);
                    resolve(results);
                }
            }
        });    
    });
}
//使用它
async function foo() {
    ......
    let result = await post(opts);
    return result;
}
活泼老夫 2022-09-08 19:55:55

天生设计就是异步的,没法同步,除非你修改nodejs

黒涩兲箜 2022-09-08 19:55:55

为什么要同步呢? 我实在想象不到什么样的需求下,需要同步请求。。
promise 也好, 直接调用 callback 也好,不就行了吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文