request.post如何改为同步执行?
发布于 9 年前 作者 seostar 8577 次浏览 最后一次编辑是 8 年前 来自 问答

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 回复

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

@klesh 那如果要在其它模块中调用,send.js模块应该怎么写?

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

库:
function sendUrl(url, cb) {
  request.post(.., function(err, res, body) {
    cb(body);
  }
}
调用:
sendUrl(url, function(body) {
  // deal with body.
})
回到顶部