[英]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 傳遞響應並執行funcTwo
和funcThree
意味着在 funcOne 中傳遞多個回調。
我知道我可以傳遞多個參數,但還有其他方法嗎?
您可以使用rest 參數語法,然后使用forEach
並apply
函數。 類似的東西
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.