簡體   English   中英

測試在哪個函數中執行回調

[英]Test in which function a callback is executed

我正在嘗試測試此回調函數在哪個函數中執行。 它應該返回一個布爾值。 我希望你明白我的意思。

這里的代碼示例:

function test(par, callback) {
  // ...
  if (typeof callback == 'function') { // make sure the callback is a function
    callback.call(this);
  }

}

test("par", function() {
  console.log("Test if in function test: " + "<if this is in function test>");
});

這類似於instanceof嗎?

自刪除arguments.caller以來,存在一種非標准的方法。

 function test(par, callback) { // ... if (typeof callback == 'function') { // make sure the callback is a function callback.call(this); } } test("par", function cb() { var isTestCaller = cb.caller === test; console.log("Test if in function test: " + isTestCaller); }); 

通過錯誤堆棧(仍然是非標准的)執行此操作的另一種可能方法:

 var checkCaller = function(fnName) { var e = new Error(); var caller = e.stack.split('\\n')[2].trim().split(' ')[1]; return caller === fnName; } function wrapper(){ console.log(checkCaller('wrapper')); } wrapper(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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