CNode

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

问答
Sseostar发布于11 年前最后回复11 年前4 回复9206 浏览0 收藏

send模块代码是这样的: 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改成同步 的?

查看回复

回复 (3)

K
klesh#1·11 年前

不能,这个还用同步的话,就没有使用 node.js 的价值了,还不如用其它的语言。python ruby .net java 都是同步的。

K
klesh#3·11 年前

最传统的就是 send 接收一个 callback 这段代码。。。没格式化看不真切,你下回发贴记得用三个反引号(Tab上面,Esc下面)把代码括起来,前后各三个。 估计是转发的意思吧? 大致上是这样:

库:
function sendUrl(url, cb) {
  request.post(.., function(err, res, body) {
    cb(body);
  }
}
调用:
sendUrl(url, function(body) {
  // deal with body.
})
参与回复
登录后即可参与回复。登录