Kenapa saya tidak boleh menulisnya seperti ini? A yang dikembalikan tidak ditentukan Secara logiknya, kod tersebut dilaksanakan secara berurutan. Hantar semula tidak akan dilaksanakan sehingga s mempunyai nilai
Apa yang sepatutnya res.send(s)
还是res.send(s())
?
Jika anda menetapkan fungsi kepada pembolehubah, adakah pembolehubah itu akan dilaksanakan apabila ia diisytiharkan?
Iaitu, apabila kod berikut mengisytiharkan s, adakah s akan dilaksanakan?
app.use("/test2",function(req,res,next){
var s=utils.Test(function(value){
console.log("value",value)
console.log("!!!")
return value
})
res.json(s())
})
Cara penulisan berikut adalah baik
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)
})
}
Ada masalah dengan kod yang anda berikan tetapi ia mungkin kerana hasilnya tidak dikembalikan apabila
utils.Test
是一个异步执行的函数吧,所以你第一种写法在执行res.json(s)
Jika anda meletakkannya dalam fungsi panggil balik dan melaksanakannya, tidak akan ada masalah.Di manakah kod ini mengisytiharkan bahawa s ialah fungsi? Apakah yang memberi anda keyakinan untuk menegaskan bahawa s mesti menjadi fungsi dan panggilan s dengan sepenuh hati anda?
Anda tidak menetapkan fungsi kepada pembolehubah Anda menyerahkan fungsi tersebut kepada fungsi yang dipanggil utils.Uji sebagai parameter pertama, dan kemudian memberikan nilai pulangan kepada pembolehubah.
Apakah yang anda maksudkan dengan s? Kemudian anda perlu bertanya kepada utils.Test, sayang, siapa tahu apa utils.Test buat, siapa tahu apa fungsi yang anda luluskan telah alami dalam utils.Test.