我正在尝试应用我在this post中学习的关于回调函数的知识,我将其扩展到3个函数,但在使事情正常工作时遇到了一些麻烦。有人可以帮我理解如何按顺序启动这三个功能吗?
var yourCallback = function(args, second) {
var t = setTimeout(function() {
$('body').append(args);
}, 800);
second('3-');
}
var yourSecondCallback = function(args) {
var t = setTimeout(function() {
$('body').append(args);
}, 800);
}
function function1(args, callback, yourSecondCallback) {
$('body').append(args);
if (callback) {
callback('2-');
}
}
function1('1-' , yourCallback);
http://jsfiddle.net/loren_hibbard/WfKx2/3/
非常感谢!
答案 0 :(得分:1)
您需要嵌套回调以使其按顺序调用。
var yourCallback = function(args, second) {
var t = setTimeout(function() {
$('body').append(args);
second('3-');
}, 800);
}
var yourSecondCallback = function(args) {
var t = setTimeout(function() {
$('body').append(args);
}, 800);
}
function function1(args, callback) {
$('body').append(args);
if (callback) {
callback('2-', yourSecondCallback);
}
}
function1('1-' , yourCallback);
答案 1 :(得分:0)
如果您的第一个参数只是所有回调的输入,则此代码可用于无限制的参数
var yourCallback = function(args, second) {
var t = setTimeout(function() {
$('body').append(args + ' first function');
}, 800);
}
var yourSecondCallback = function(args) {
var t = setTimeout(function() {
$('body').append(args + ' second function');
}, 800);
}
function function1(args) {
var callbacks = arguments.length - 1;
for (i = 1; i < arguments.length; i++) {
if (typeof(arguments[i] == 'function')) {
arguments[i](arguments[0]);
}
}
}
function1('1-', yourCallback, yourSecondCallback);
答案 2 :(得分:0)
你的功能名称让我很困惑,所以我只是想说明一个简单的方法:
function1('-1', function(){
secondCallback(...);
thirdCallback(...);
...
});
任何理由这样简单的方法都不适合你?
答案 3 :(得分:0)
不确定您要在这里做什么,但是当您在function1
中执行此操作时:
callback('2-');
您正在调用此方法:
var yourCallback = function(args, second)
但您没有为second
提供值,因此您会收到错误。
答案 4 :(得分:0)
我有一个函数 mainMethod ,它正在调用三个回调函数。
mainFunction 将调用第一个回调函数(一个),并将第一个参数传递给它。
一个会将第二个参数传递给第二个回调函数(两个)。
两个会将第三个参数传递到最后一个回调函数(三个)中。
3 将只记录传递给它的最后一个参数。
function mainFunction(callback1, callback2, callback3){
var first_parameter = "ONE"
callback1(first_parameter);
}
function one(a){
console.log("one: " + a);
var second_parameter = "TWO"
two(second_parameter);
}
function two(b){
console.log("two: " + b);
var third_parameter = "THREE";
three(third_parameter);
}
function three(c){
console.log("three: " + c);
}
mainFunction(one, two, three);