节点.js“已调用回调”.但是没有任何其他回调

Node.js "Callback is already called". But there are no any other callbacks

本文关键字:回调 其他 任何 已调用回调 js 调用 节点      更新时间:2023-09-26

我整天都在搜索论坛,但我无法解决我的问题。我使用 NodeJS 和 async.waterfall 来发出一些 API 请求。相同的结构对我有用,但不存在;

    async.waterfall([
       function (callback) {
           callback(null, latitude, longitude, callback);
       },
       getGeoNames,   
   ],
   function (err, result) {
      console.log("ok");
   })

这是函数 getGeoNames 有错误

function getGeoNames(latitude, longitude, callback) {
    var countryKey = 'country';
    var stateKey = 'administrative_area_level_1';
    var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng="+latitude+","+longitude;

    request({
        url: url,
        json: true
    }, function (error, response, body) {
            var adresses = body.results[0].address_components;
            var geo = {};
            for (var i = 0, len = adresses.length; i < len; i++) {
                var adress = adresses[i];
                //console.log(adress);
                if ( adress.types[0] == countryKey ) {
                    geo.country = adress.long_name;
                    if (geo.state !== undefined) break;
                }
                else if ( adress.types[0] == stateKey ) {
                    geo.state = adress.long_name;
                    if (geo.country !== undefined) break;
                }
            };
            return callback(null, geo); // ERROR HERE <-----------------
    })
}

请求函数可以运行 callback() 函数吗,所以它之前运行过?我尝试过没有"返回",但它是一样的。

        if (fn === null) throw new Error("Callback was already called.");
                         ^

错误:已调用回调。 at c:''Users''Serega'ode_modules''async''dist''async.js:803:36 at Request._callback (c:''Users''Serega''WebstormProjects''untitled1''server.js:174:20) at Request.self.callback (c:''Users''Serega'ode_modules''request''request.js:200:22) 在发出两个(事件.js:87:13) at Request.emit (events.js:172:7) 应要求。(c:''Users''Serega'ode_modules''request''request.js:1067:10) at emitOne (events.js:82:20) at Request.emit (events.js:169:7) 在来电消息。(c:''Users''Serega'ode_modules''request''request.js:988:12) at emitNone (events.js:72:20)

进程已完成,退出代码为 1

PS:其他瀑布功能适用于我的请求。

感谢您的帮助!

错误在这里。

callback(null, latitude, longitude, callback);

不应将回调作为参数传递。