為什麼這樣寫不行。回傳的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)
})
}
你給的程式碼是不是有問題,不過大概是因為
utils.Test
是一个异步执行的函数吧,所以你第一种写法在执行res.json(s)
的時候結果還沒返回,你把他放在callback function裡面執行就不會有這個問題。這段程式碼哪裡宣告了 s 是一個函數了?是什麼給了你信心讓你一口咬定 s 一定是一個函數還信誓旦旦調用了 s?
你並沒有把一個函數賦值給一個變量,你把這個函數傳遞給了一個叫 utils.Test 的函數當第一個參數了啊親,然後把返回值給了這個變量啊親。
你說 s 到底是啥?那你要問 utils.Test 啊親,鬼知道 utils.Test 到底乾了什麼,鬼知道你傳遞進去的那個函數,在 utils.Test 裡到底經歷了什麼。