置頂
兩層以上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隻動物
請各位不吝嗇指導
up vote
0
我想,您可以用錯 callback 的意思了, callback 不是用在這個地方
callback 通常是用在兩個程式交換訊息用的
不是自己 call 自已
up vote
0
![]()
up vote
0
既然都用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
會員登入
(先登入會員才能回覆留言喔!)
