节点async.js:callback不是函数错误?

我有这个代码:

async = require('async') async.auto({ getUserName: function(callback) { console.log('**In getUserName.**') callback(null, 'Lem') }, connectToDb: function(callback) { console.log('**In connectToDb.**') var connected = true if(connected) { callback(null, connected) } else { callback('Error connecting to DB.', null) } }, checkIfUserExist: [ 'getUserName', 'connectToDb', function(callback, results) { console.log('**In checkIfUserExist.**', JSON.stringify(results)) var userExist = false if(userExist) { callback('User exist in DB.') } else { setTimeout( function() { callback(null, userExist); }, 1000 ); } } ], signup: [ 'checkIfUserExist', function(callback, results) { console.log('**In signup**', JSON.stringify(results)) var userName = results.getUserName var isDbConnected = results.connectToDb var userExist = result.checkIfUserExist if(userName && isDbConnected && !userExist) { callback(null, {'status': '200', 'msg': 'Successfully signed up user'}) } else { callback('Error signing up user.', null) } } ] }, function(error, results) { console.log('error = ', error) console.log('results = ', results) }) 

为什么我遇到这个错误:

 **In getUserName.** **In connectToDb.** error = function () { if (fn === null) throw new Error("Callback was already called."); var callFn = fn; fn = null; callFn.apply(this, arguments); } results = undefined **In checkIfUserExist.** undefined ^[[A/home/lem/js/async/asyncAuto.js:30 callback(null, userExist); ^ TypeError: callback is not a function at Timeout._onTimeout (/home/lem/js/async/asyncAuto.js:30:13) at ontimeout (timers.js:365:14) at tryOnTimeout (timers.js:237:5) at Timer.listOnTimeout (timers.js:207:5) 

在第2版中,asynchronous的auto方法发生了突变,您似乎正在使用该方法。 https://github.com/caolan/async/blob/master/CHANGELOG.md#breaking-changes

自动任务function现在总是把callback作为最后一个参数。 如果任务具有依赖关系,则结果对象将作为第一个parameter passing。 要迁移旧的任务function,请用_.flip包装它们

一个asynchronous函数,需要callback作为最后一个参数。 这是我的工作代码。

  var async = require('async'); async.auto({ getUserName: function(callback) { console.log('**In getUserName.**') callback(null, 'Lem') }, connectToDb: function(callback) { console.log('**In connectToDb.**') var connected = true if(connected) { callback(null, connected) } else { callback('Error connecting to DB.', null) } }, checkIfUserExist: [ 'getUserName', 'connectToDb', function(results, callback) { console.log('**In checkIfUserExist.**', JSON.stringify(results)) var userExist = false if(userExist) { callback('User exist in DB.') } else { setTimeout(function() { callback(null, userExist); },1000); } } ], signup: [ 'checkIfUserExist', function(results, callback) { console.log('**In signup**', JSON.stringify(results)) var userName = results.getUserName var isDbConnected = results.connectToDb var userExist = results.checkIfUserExist if(userName && isDbConnected && !userExist) { callback(null, {'status': '200', 'msg': 'Successfully signed up user'}) } else { callback('Error signing up user.', null) } } ], }, function(error, results) { console.log('error = ', error) console.log('results = ', results) }) 

函数(callback,结果)应该是函数(结果,callback)

请检查这个url以供参考。 https://caolan.github.io/async/docs.html#auto