簡體   English   中英

如何在1-arg javascript函數中使用2個參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM