0
我有这样的JS代码:如何传递函数作为回调?
Download.prototype.insert = function(stocks, exchange, cb){
var self = this
, count = stocks.length
stocks.forEach(function(stock){
save(stock, done)
})
function save(stock, cb){
self.mysql.query("my query", [exchange.id, stock.Symbol], function(err, rows){
if (rows && rows.length > 0)
self.mysql.query("my query", [rows[0].id, stock.DateTime, stock.Close], cb)
else cb()
})
}
function done(){
count--
if (count === 0) return cb()
}
}
,你可以看到我传递一个回调到save()
功能,我想知道如果我能单独查询,以避免使用function(err, rows){ .... }
问题该函数是否等待两个参数err
和rows
,那么如何传递一个自定义的第三个参数(cb()
函数)?
感谢
我认为你所做的方式是可以的,因为在匿名'函数(err,rows)'里面,你仍然可以从外部作用域引用'cb'。你不必再次通过'cb'。 –
这也是我的第一个想法,但我认为Dail只是想分开查询,并正在寻找一种方法将回调函数(包括“完成”回调参数)传递给mysql.query .. –
afaik它已关闭到写回调的人来包含任何所需的参数,即jquery的回调可以接受参数,关于你传递的回调是否带有参数,参见[this](http://jsfiddle.net/dafastestfingers/EBLx8/1 /)并玩弄参数 –