簡體   English   中英

在函數中傳遞多個回調

[英]passing multiple callback in a function

funcOne(cb) {
  //some async actions
  cb(resp) //pass resp to callback function
}



fucntionTwo(resp) { console.log(resp) }
fucntionThree(resp) { console.log(resp) }

funcOne(funcTwo)
funcOne(funcThree)

函數一將在上述情況下運行兩次,如何讓 funcOne 運行一次但觸發 funcTwo 和 funcThree? 我需要從 funcOne 傳遞響應並執行funcTwofuncThree意味着在 funcOne 中傳遞多個回調。

我知道我可以傳遞多個參數,但還有其他方法嗎?

您可以使用rest 參數語法,然后使用forEachapply函數。 類似的東西

 function funcOne(...cb) { console.log("one"); cb.forEach(s => s.apply()); } function funcTwo() { console.log("two"); } function funcThree() { console.log("three"); } funcOne(funcTwo, funcThree);

並且您可以使用任意數量的函數參數調用funcOne

只需將多個參數作為回調函數傳遞

function funcOne(cb1, cb2) {
  cb1();
  cb2();
}

如果回調的數量是動態的,則迭代arguments

function funcOne() {
  Array.from( arguments ).forEach( s => typeof s == "function" && s() );
}

並將其調用為

funcOne( function(){ console.log(1) }, function(){ console.log(2) }, function(){ console.log(3) } )

您可以將兩個回調傳遞給您的 functionOne:

funcOne(cb1, cb2) {
    cb1();
    cb2();
}

funcOne(funcTwo, funcThree);

這很簡單:

function One(arg) {
    Two(arg);
    Three(arg);
}

傳遞兩個函數作為參數

funcOne(a, b) {
  a(); b();
}

funcOne(funcTwo, funcThree)

如果函數的范圍是您提到的方式,那么您甚至不需要將它們作為參數傳遞。 直接打電話給他們就行了。

 function funcOne() { //some async actions var resp = "Some response"; fucntionTwo(resp); fucntionTwo(resp); } funcOne(); function fucntionTwo(resp) { console.log(resp) } function fucntionThree(resp) { console.log(resp) }

您可以使用參數關鍵字。

演示示例

function test()
{ for(var i=0; i< arguments.length; i++)
   arguments[i]();
}

test(fun1 , fun2)

您可以按照此代碼進行操作,希望您的問題得到解決

function funcOne(fucntionTwo, fucntionThree) {

    fucntionTwo(resp)
    fucntionThree(resp)
}

funcOne(function (resp) {
    console.log(resp)
}, function (resp) {
        console.log(resp)
})

暫無
暫無

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

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