[英]How to use 2 arguments in a 1-arg javascript function?
我正在使用node.js中的http模塊從url中讀取。 http.get函數具有以下簽名 :
http.get(options[, callback])
回調函數只接受一個參數res。 如果我想在回調中使用額外的對象/函數,我該怎么辦? 我可以考慮像這樣內聯get get:
outerFunction = function(xyz) {
http.get(options, (res) => {
// do stuff with xyz here
xyz(res.blah);
}
});
但是如果我的回調變長了,我想在某個地方預先聲明它:
myCallback = function(xyz) {
return function(r) { xyz(r.blah); };
}
並像這樣調用myCallback:
outerFunction = function(xyz) {
http.get(options, (res) => {
myCallback(xyz)(res);
});
}
但這似乎超級笨拙,只能繞過1-arg回調限制。
還有更好的方法嗎? 謝謝!
你可以使用這個代碼,因為myCallback返回一個函數,然后在獲取資源后,http會自動將res傳遞給xyz。
outerFunction = function(xyz) {
http.get(options,myCallback(xyz));
}
您可以使用arguments對象。
arguments對象是所有函數中可用的局部變量。 您可以使用arguments對象引用函數內的函數參數。 此對象包含傳遞給函數的每個參數的條目,第一個條目的索引從0開始。
快速舉例:
function test1234(a){
var args = arguments;
console.log(args); // prints -> 0: "a", 1: "b"
}
test1234('a', 'b');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.