问题描述
我对 javascript 中的 promise 真的很陌生,所以我真的不明白我的代码中可能缺少什么。基本上我的问题是,在我的主程序中,我试图使用 async.forEachOf
遍历 json 数组,在其中调用 DAO.processData
并在完成循环后我想发送响应。如果有更好的解决方案,请提供帮助。
现在,我试图从另一个模块访问一个值,该模块返回一个 promise 对象和一个值。承诺返回模块如下所示:
var dao = {}
dao.processData = function(data) {
var finalPromise = new Promise(()=>{});
async.waterfall([function1,function2,function3],someCallBackFunction);
someCallBackFunction = function () {
console.log('in some function');
finalPromise = new Promise( (resolve,reject) => {
resolve(data++);
})
return finalPromise;
}
}
module.exports = dao
接收数据的模块如下图。
const DAO = require('./myObject')
var myArray = [1,2]
var jsonResponse = {}
someRouterFunction = function (req,res) {
async.forEachOf(myArray,(number) => {
Promise.resolve(DAO.processData(number)).then( prepareResponse )
.catch ( e => { console.log(e) } );
},(err) => {
res.json(jsonResponse);
})
}
function prepareResponse (res) {
jsonResponse = {
'msg': res
}
}
someRouterFunction();
使用此代码返回 cannot read propety 'then' of undefined
。所以我在 someRouterFunction
中做了以下事情:
Promise.resolve(DAO.processData(number)).then( prepareResponse );
这会调用该函数,但我永远无法访问 res
函数中的 prepareResponse
返回值。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)