js函数执行顺序问题,将函数赋值给变量,是否执行?

为什么这样写不行。返回的a是undefined,按道理代码是顺序执行的啊,s有值之后才会res.send啊

到底是应该res.send(s)还是res.send(s())呢?
如果把一个函数赋值给一个变量,那么这个变量在声明的时候执行么?

就是下面代码声明s的时候s是否执行?

app.use("/test2",function(req,res,next){   var s=utils.Test(function(value){    console.log("value",value)    console.log("!!!")    
return value
   
   })
   res.json(s())
})

下面这种写法就可以

app.use("/test2",function(req,res,next){
 utils.Test(function(value){
    console.log("value",value)
    console.log("!!!")
      res.json(s)
   
   })
 
})

utils.Test()

utils.Test=function(callback){
    request("http://localhost:3000/test/1.json",(err,res,body)=>{        let result=JSON.parse(body)        
    console.log("result",result)        // console.log(typeof result)
        callback(result)
    })
}


一只萌萌小番薯
浏览 596回答 1
1回答

四季花海

你给的代码是不是有问题,不过大概是因为utils.Test是一个异步执行的函数吧,所以你第一种写法在执行res.json(s)的时候结果还没返回,你把他放在callback function里面执行就不会有这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript