pop()不是一个函数 - nodejs

5

当我在数组上调用pop()函数时,NodeJS出现了一个奇怪的错误: TypeError: cars.pop不是一个函数。我感到困惑。

有人能提供帮助吗?以下是代码。谢谢:

//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);
1个回答

4

这是因为在第二次调用logCars函数时,您没有传递数组。您在第二次递归调用时传递了弹出的字符串。

换句话说,在嵌套回调中,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
  });
}

1
非常感谢,它起作用了。但是,它只返回列表中的一个调用。它应该返回列表中的异步调用并显示列表。 - Celaro
1
谢谢Josh,我刚刚修复了它...我在代码中有一些拼写错误哈哈 - Celaro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接