首页 > 解决方案 > setTimeout - 回调参数必须是一个函数

问题描述

我的代码一直在工作,直到我将 node.js 更新到 8.11.3 版

现在,当尝试使用 setTimeout 调用函数时,我总是得到错误“回调参数必须是函数”。

function testFunction(itemid, price) {

  var url = 'https://example.com';
  var options = {
  method: 'get',
  url: url
  }

  request(options, function (err, res, body) {
    var response = JSON.parse(body);

     if(response.status == 'fail'){
        setTimeout(testFunction(itemid, price), 100);
     }
  })

}

标签: javascriptnode.jscallbacksettimeout

解决方案


回调参数setTimeout必须是一个函数。像这样写。未经测试,但它应该可以工作。

function testFunction(itemid, price) {

    var url = 'https://example.com';
    var options = {
        method: 'get',
        url: url
    }

    request(options, function (err, res, body) {
        var response = JSON.parse(body);
        if(response.status == 'fail'){
            setTimeout(function () {
                testFunction(itemid, price);
            }, 100);
        }
    })
}

推荐阅读