gpt4 book ai didi

javascript - 如何将函数作为回调传递?

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:23 26 4
gpt4 key购买 nike

我有这个 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){ .... }

问题是函数等待两个参数 errrows,所以我怎样才能传递自定义的第三个参数(cb() 函数)?

谢谢

最佳答案

我希望我正确理解你的问题^^

要包装回调参数,您可以创建一个返回匿名函数(实际回调)的函数。 cb 参数被包装到匿名函数的上下文中:

function queryDetails(cb){
return (
function(err, rows){
if(rows && rows.length < 0){
//mysql.query ...
}else{
cb()
}
})
};
mysql.query("query", ...., queryDetails(doneCallback));

玩得开心!

关于javascript - 如何将函数作为回调传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8955651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com