在函数中传递多个回调

时间:2018-02-23 06:20:26

标签: javascript reactjs

GET /v0.1/admin

函数one将以上述情况运行两次,如何使funcOne运行一次但触发funcTwo和funcThree?我需要从funcOne传递resp并执行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) 和{{ 1}}表示在funcOne中传递多个回调。

我知道我可以通过多个args,但有没有其他方法可以做到这一点?

7 个答案:

答案 0 :(得分:3)

您可以使用rest parameter语法,然后使用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

答案 1 :(得分:2)

简单地传递多个参数作为回调函数

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) } )

答案 2 :(得分:2)

您可以将两个回调传递给您的functionOne:

#include <iostream>
#include <string>
using namespace std;
#include "myfile.h"

int main() {
string item="IndicatorLED";
func (item);

string item1="AssetTag";
func(item1);

string item2="ManagerType";
func(item2);

string item3="Count";
func(item3);    
}

答案 3 :(得分:1)

这很容易:

-I -c

答案 4 :(得分:0)

将两个函数作为参数传递

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

funcOne(funcTwo, funcThree)

如果函数的范围是您提到的方式,那么您甚至不需要将它们作为参数传递。直接打电话给他们。

&#13;
&#13;
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) }
&#13;
&#13;
&#13;

答案 5 :(得分:0)

您可以使用arguments关键字。

演示示例

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

test(fun1 , fun2)

答案 6 :(得分:0)

您可以按照以下代码操作,希望您的问题得到解决

function funcOne(fucntionTwo, fucntionThree) {

    fucntionTwo(resp)
    fucntionThree(resp)
}

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