我如何调用一个then()函数?我是Bluebird的新手,之前我只是简单地触发回调来通知被调用的函数完成了它的工作。蓝鸟的函数然后
这是我的“主代码”,它将区域设置数据插入到我的Mongo和Redis数据库中。
var promise = Language.findOne({}).exec()
promise.then(function(languages) {
/* If collection is empty initialize it */
if(!languages)
return insertLanguagesIntoMongoDB()
})
.then(function() {
/* Make sure it's cached in Redis */
return insertLanguagesIntoRedis()
})
.catch(function(err) {
throw err
})
这是我的功能看起来像,但它说:“回调不是一个函数”:
function insertLanguagesIntoRedis(callback) {
logger.info("Inserting languages into redis db")
var promise = Language.find({}).exec()
promise.then(function(languages) {
if(!languages)
throw new Error("Couldn't find any languages in MongoDB's Language collection")
var languageJson = []
for(var i=0; i<languages.length; i++) {
var object = {}
object.id = languages[i].iso_code
object.text = languages[i].name_en
languageJson.push(object)
}
redis.set('languages', JSON.stringify(languageJson))
return callback()
})
.catch(function (err) {
throw err
})
}
那么我将如何正确定义和调用我的insertLanguagesIntoRedis
和insertLanguagesIntoMongoDB
功能?
那么你是
更新在输入时不会将任何内容传递给insertLanguagesIntoRedis。 – akaphenom
@akaphenom不幸的是,我对回调/蓝鸟很陌生,你能告诉我如何做到这一点正确的方式使用蓝鸟? – kentor
在这种情况下,我不认为你需要通过,甚至拨打回叫。但我认为你应该看看承诺是如何工作的,以及如何将它们联系在一起。 – akaphenom