console.log("before")
function g(p,callback){
callback('1')
}
g(1,(re)=>{
console.log(re);
})
console.log("after")Run Code Online (Sandbox Code Playgroud)
结果是在之后的1之前.如何使函数调用异步意味着结果应该在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)
Run Code Online (Sandbox Code Playgroud) 我上一篇文章中强调的某些性能建议我参考stackoverflow 中的以下问题避免显式的 Promise 构造反模式
坦白说,我对 JS 和 Node 都是新手,也没有经常使用 Promise。我去读了那些文章,但要么我无法理解或无法联系,要么我对承诺的理解一直模糊/错误
所以我决定在新线程中提出这个问题并寻求帮助。
我正在创建帮助程序/通用函数,我可以用它来保持代码整洁,如果我想随时更改函数内部的任何内容,我不必手动更改每个函数。
这些是我制作的功能
//Find user by email Address
const findUserByEmail = (emailAddress) => {
return new Promise((resolve, reject) => {
User.findOne({email: emailAddress}).then(response => {
resolve(res)
}).catch(error => {
reject("Error in findUserByEmail", error);
})
})
}
//Create User
const createNewUser = (newUserDetails) => {
return new Promise((resolve, reject) => {
new User({
fullName: newUserDetails.fullName,
email: newUserDetails.email,
image: newUserDetails.image,
gender: newUserDetails.gender,
age: newUserDetails.age
}).save().then((response) => { …Run Code Online (Sandbox Code Playgroud)