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

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

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改成同步的?


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


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这是错误返回
})

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

【热门文章】
【热门文章】