我如何才能调用一个函数,然后()呢?我是蓝鸟的新手,以前我只会触发回调,通知被调用的函数是用它的东西完成的。
这是我的“主代码”,它将地区数据插入到我的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函数呢?
发布于 2017-05-31 20:33:48
类似这样的东西可能会起作用:
变量允诺= Language.findOne({}).exec()
promise.then(function(languages) {
/* If collection is empty initialize it */
if(!languages)
insertLanguagesIntoMongoDB()
return languages
})
.then(function(languages) {
/* Make sure it's cached in Redis */
return insertLanguagesIntoRedis(languages)
})
.catch(function(err) {
throw err
})
function insertLanguagesIntoRedis(languages) {
logger.info("Inserting languages into redis db")
var promise = Language.find({}).exec()
return 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))
})
.catch(function (err) {
throw err
})
}更新per @Bergi
var promise = Language.findOne({}).exec()
promise.then(function(languages) {
/* If collection is empty initialize it */
if(!languages)
insertLanguagesIntoMongoDB()
return languages
})
.then(function(languages) {
/* Make sure it's cached in Redis */
return insertLanguagesIntoRedis(languages)
});
function insertLanguagesIntoRedis(languages) {
logger.info("Inserting languages into redis db")
var promise = Language.find({}).exec()
return 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))
})
}https://stackoverflow.com/questions/44293888
复制相似问题