2017-01-30 13 views
1

配列に関数pop()を呼び出すとNodeJSに異常なエラーが発生しました。TypeError: cars.pop is not a function ...混乱します。pop()は関数ではありません - nodejs

助けが必要ですか?以下はコードです。あなたは2回目の呼び出しでlogCars関数に配列を渡していないためです

//callback chaining to avoid having multiple callbacks in the event queue 
//only one callback calling others 
function showCar(car, callback) { 
    console.log('Saw a ' + car); 
    if (car.length) { 
    //register the function as asynchronous 
    process.nextTick(function() { 
     callback(); 
    }) 
    } 
} 

function logCars(cars) { 
    var car = cars.pop(); 
    showCar(car, function() { //chaining of call backs 
    logCars(car); 
    }); 
} 
var cars = ['ferrari', 'porsh', 'Hyundai', 'Peugeot']; 
logCars(cars); 

答えて

3

、ありがとうございます。 2番目の再帰呼び出しでポップされた文字列を渡しています。

つまり

logCars(car)はあなたがコールバックをネストしているlogCars(cars)次のようになります。

function logCars (cars){ 
    var car = cars.pop(); 
    showCar(car, function() { 
    logCars(cars); // This should be `cars`, not `car` like you had 
    }); 
} 
+0

は、それが働いた、どうもありがとうございました。ただし、リストから1つのコールのみを返します。非同期呼び出しをリストに戻し、リストを表示する必要があります。 – Celaro

+1

ジョシュ、ありがとう、私はちょうどそれを修正...私はコードのいくつかのタイプミスを持っていた – Celaro

関連する問題