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,但有没有其他方法可以做到这一点?
答案 0 :(得分:3)
您可以使用rest parameter语法,然后使用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
。
答案 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)
如果函数的范围是您提到的方式,那么您甚至不需要将它们作为参数传递。直接打电话给他们。
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;
答案 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)
})