評價: 0 回應: 3 閱覽: 181
置頂

兩層以上callback失敗,請求指點

大家好,胎嘎賀

小弟在研究callback

目前2層還ok,但要在加第三層或更多就卡住不知道該如何傳

網路上關於callback也都點到為止,以兩層為範例

這是我的 code

var data = ['cat', 'dog', 'bird', 'fish', 'butterfly'];

function a(data, callback) {

    var animals = data;
    
    animals.push('goat','rhinoceros');

    if (callback && typeof (callback === 'function')) {
        callback(animals);
    }
}

function b(data,callback) {
  
    var animals = data;
 
    for (var animal in animals) {
        console.log(animals[animal]);
    }

    if (callback && typeof (callback === 'function')) {
        callback(animals);
    }
}

function c (animals){
    console.log('共' + animals.length + '隻動物');
}

a(data,b(c));

我想讓最後console的結果是跑出7隻動物名 + 共7隻動物

請各位不吝嗇指導

熱門回應

我想,您可以用錯 callback 的意思了, callback 不是用在這個地方

callback 通常是用在兩個程式交換訊息用的

不是自己 call 自已

yes

既然都用callback了,你就要善用return值

var data = ['cat', 'dog', 'bird', 'fish', 'butterfly'];

function a(data, callback) {

    var animals = data;
    
    animals.push('goat','rhinoceros');

    return animals;
}

function b(data,callback) {
  
    var animals = data;
 
    for (var animal in animals) {
        console.log(animals[animal]);
    }

    if (callback && typeof (callback === 'function')) {
        callback(animals);
    }
}

function c (animals){
    console.log('共' + animals.length + '隻動物');
}

b(a(data), c);

最外面的最後叫,可是你要先解a再套到b

所以這時候並不是a需要callback,而是b需要callback

但a需要return值給b

所以a(data)會回傳push過的陣列,b會去解這個回傳值

解完結束再去叫callback

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言