javascript - Problem mit der Ausführungsreihenfolge der JS-Funktion: Wird die Funktion ausgeführt, wenn sie einer Variablen zugewiesen ist?
给我你的怀抱
给我你的怀抱 2017-05-19 10:07:46
0
2
583

Warum kann ich es nicht so schreiben? Das zurückgegebene a ist undefiniert, der Code wird sequentiell erst ausgeführt, wenn s einen Wert hat

Was soll

sein? res.send(s)还是res.send(s())Wenn Sie einer Variablen eine Funktion zuweisen, wird die Variable dann ausgeführt, wenn sie deklariert wird?

Das heißt, wenn der folgende Code s deklariert, wird s ausgeführt?

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

Die folgende Schreibweise ist in Ordnung

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)
    })
}
给我你的怀抱
给我你的怀抱

Antworte allen(2)
我想大声告诉你

你给的代码是不是有问题,不过大概是因为utils.Test是一个异步执行的函数吧,所以你第一种写法在执行res.json(s)的时候结果还没返回,你把他放在callback function里面执行就不会有这个问题。

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

这段代码哪里声明了 s 是一个函数了?是什么给了你信心让你一口咬定 s 一定是一个函数还信誓旦旦调用了 s?

如果把一个函数赋值给一个变量,那么这个变量在声明的时候执行么?

你并没有把一个函数赋值给一个变量,你把这个函数传递给了一个叫 utils.Test 的函数当第一个参数了啊亲,然后把返回值给了这个变量啊亲。

你说 s 到底是啥?那你要问 utils.Test 啊亲,鬼知道 utils.Test 到底干了什么,鬼知道你传递进去的那个函数,在 utils.Test 里到底经历了什么。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage