[問題] node.js的promise如何使用外面的變數

看板Ajax作者 (tnsshnews)時間9年前 (2015/05/19 00:44), 編輯推噓5(5019)
留言24則, 6人參與, 最新討論串1/1
var http = rest.testing(object); var temp = '***'; http.then( function (response) { console.log(response); //這裡面要怎樣使用promise外面的變數, 如temp, object呢 } ); 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.173.173 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1431967443.A.FE9.html

05/19 00:56, , 1F
直接用不就好了?
05/19 00:56, 1F

05/19 01:14, , 2F
直接用會顯示undefined, promise內與外是兩個不同時空
05/19 01:14, 2F

05/19 01:15, , 3F
你應該去google一下closure,正常能直接用
05/19 01:15, 3F

05/19 01:15, , 4F
不能用這種事不會發生在js
05/19 01:15, 4F

05/19 01:17, , 5F
node.js有特殊用法?
05/19 01:17, 5F

05/19 01:18, , 6F
除非你的用的framework幹了奇怪的事,導致scope搞丟
05/19 01:18, 6F

05/19 01:18, , 7F
這不是nodejs的feature,這是js本身的設計
05/19 01:18, 7F

05/19 01:19, , 8F
就算是browser裡的一樣能這樣用
05/19 01:19, 8F

05/19 01:20, , 9F
只要你在function的內部不要用var把它宣告成local就好
05/19 01:20, 9F

05/19 01:21, , 10F
他就會自動去掃外層scope的變數來用
05/19 01:21, 10F

05/19 01:22, , 11F
補充 外層還有一個for loop
05/19 01:22, 11F

05/19 01:31, , 12F
再不然應該可以用類似 #1J-pvObM 裡那樣
05/19 01:31, 12F

05/19 01:38, , 13F
js裡唯一創造local變數的方式是在function裡放var,其他
05/19 01:38, 13F

05/19 01:39, , 14F
無論是for裡放var也好,while也好,都不會產生新變數
05/19 01:39, 14F

05/19 01:40, , 15F
只有function ()後的那一對括弧能產生新scope
05/19 01:40, 15F

05/19 01:41, , 16F
然後無論你在function裡的哪個位置放var,意義都一樣,
05/19 01:41, 16F

05/19 01:41, , 17F
local變數宣告會被自動移到function最開頭
05/19 01:41, 17F

05/19 01:42, , 18F
放在for的三個statement也好,放在if裡也好,意義都一樣
05/19 01:42, 18F


05/19 08:50, , 20F
直接用就好了+1 你到底怎麼辦到變undefined的?
05/19 08:50, 20F

05/19 10:27, , 21F
剛剛測試過了 直接用就好了
05/19 10:27, 21F

05/19 10:35, , 22F
認真回 這叫 static(lexical) scope
05/19 10:35, 22F

05/19 10:37, , 23F
所以 js 找變數並不是從 runtime stack 找,而是從原始碼
05/19 10:37, 23F

05/19 10:37, , 24F
開始往上找
05/19 10:37, 24F
文章代碼(AID): #1LMXRJ_f (Ajax)