【发布时间】:2018-04-22 05:46:53
【问题描述】:
console.log("before")
function g(p,callback){
callback('1')
}
g(1,(re)=>{
console.log(re);
})
console.log("after")
结果是前1后。 如何使函数调用异步意味着结果应该是 before after 1 没有 setTimeout 函数
用例是这样的
我在一个函数内部有一个 api 调用,并在这个函数调用之后发送响应。但是因为这个函数被同步调用,所以发送响应被延迟了。所以我想在 api 调用之前发送响应
console.log("before callback")
apiRes.url = [url];
apimanager.callfunc(requestBody, apiRes,(err,success)=>{
console.log("success ",success)
console.log("inside callback");
});
console.log("after callback")
return response.json(someresponse)
【问题讨论】:
-
改用承诺
-
它的用例是什么?或者你只是在研究 Javascript?
-
我在一个函数内部有一个 api 调用,并在这个函数调用之后发送响应。但是因为这个函数被同步调用,所以发送响应被延迟。所以我想在 api 调用之前发送响应 console.log( "回调前") apiRes.url = [url]; apimanager.callfunc(requestBody, apiRes,(err,success)=>{ console.log("success",success) console.log("内部回调"); }); console.log("回调后") return response.json(someresponse)
-
No..它的打印 beforecallback insidecallback aftercallback..我共享的类似代码 sn-p..我需要 before after inside..
-
这听起来像是 X/Y 问题。在基本层面上,我会考虑将其关闭为“使同步函数异步”的副本,但我认为这实际上并不能解决您面临的问题。想扩展一下你的真实代码中实际发生的事情吗?
标签: javascript node.js