项目中遇到一个需求,客户端发起一个http请求后,服务器会调用一个第三方接口做一些耗时5-10秒左右的事情(接口是实时返回的,但并不返回执行接口,只返回命令已经发送,此时我需要等待发送后的结果)。事情处理完成后,会将数据保存入数据库。我需要将这个保存入的数据库中的数据返回给这个http请求。 我不知道我说的大家是否明白。 好比我程序发起一个数据库请求的查询,数据库查询完成后会执行回调。这个过程使用nodejs应该怎么来实现呢? 我想到的办法是制作一个setTimeout,不停的去查询数据库,查询到数据库中的结果后调用回调函数。但总觉得这样的效率太慢。 请问有遇到过类似问题的同学吗?
比如如下代码,有办法提高效率吗? function checkCmd(callback){ var i=0; function check(){ $.post("http://xxxxx.com/checkCmd",cmd,function(dd){ if(dd===1){ callback(dd) }else if(i>5){ callback(-1) }else{ i++; setTimeout(check,2000); } }) } check(); }
function send(cmd,callback){ $.post("http://xxxxx.com/sendCmd",cmd,function(){ console.log("接口调用成功"); checkCmd(callback);//不停的检查返回结果 }) } send({"name":"abc"},function(b){ console.log(b); })