Pourquoi ne puis-je pas l'écrire comme ça ? Le a renvoyé n'est pas défini Logiquement parlant, le code est exécuté séquentiellement. Res.send ne sera exécuté que lorsque s aura une valeur
.Que devrait res.send(s)
还是res.send(s())
être ?
Si vous assignez une fonction à une variable, la variable sera-t-elle exécutée lorsqu'elle sera déclarée ?
Autrement dit, lorsque le code suivant déclare s, s sera-t-il exécuté ?
app.use("/test2",function(req,res,next){
var s=utils.Test(function(value){
console.log("value",value)
console.log("!!!")
return value
})
res.json(s())
})
La manière d'écrire suivante convient
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)
})
}
Y a-t-il un problème avec le code que vous avez donné ? Mais c'est probablement parce que le résultat n'a pas été renvoyé lorsque
utils.Test
是一个异步执行的函数吧,所以你第一种写法在执行res.json(s)
Si vous le mettez dans la fonction de rappel et l'exécutez, il n'y aura pas de problème.Où ce code déclare-t-il que s est une fonction ? Qu'est-ce qui vous donne la confiance nécessaire pour insister sur le fait que les s doivent être une fonction et appeler les s de tout votre cœur ?
Vous n'avez pas attribué de fonction à une variable. Vous avez transmis la fonction à une fonction appelée utils.Test comme premier paramètre, puis avez donné la valeur de retour à la variable.
Qu'entends-tu par s ? Ensuite, vous devez demander à utils.Test, mon cher, qui sait ce que fait utils.Test, qui sait ce que la fonction que vous avez transmise a vécu dans utils.Test.