我需要knex
选择查询结果到变量。
function getUserPlanDetailsWithOutCb(user_id) {
var dataArr =[];
knex('user_plans').select('*').where({ 'user_id': user_id }).then(function(result) {
result.forEach(function(value) {
dataArr.push(value)
});
//return dataArr;
});
return dataArr;
}
var result = getUserPlanDetailsWithOutCb(12);
我在knex
的回调内外尝试了返回值。对于上面的代码,我得到的结果为 []
对于第二个(return inside callback)
,我得到了结果
{
"isFulfilled": false,
"isRejected": false
}
答案 0 :(得分:1)
要使用Promises返回变量,请对数据检索功能执行以下操作:
并注意:return knex(
将Promise对象返回给调用者,return dataArr
将值返回给调用者的.then()
promise子句。
function getUserPlanDetailsWithOutCb(user_id) {
var dataArr =[];
return knex('user_plans').select('*')
.where({ 'user_id': user_id })
.then(function(result) {
result.forEach(function(value) {
dataArr.push(value)
});
return dataArr;
});
}
通过以下方式调用该功能:
var result;
var aPromise = getUserPlanDetailsWithOutCb(12)
.then(function(result) {
result = value;
});
result
结算时将设置aPromise
变量。
使用var aPromise
调用函数将导致程序执行在Promise完成并设置result
之前继续,这可能不是您想要的。所以你可以使用await
代替(@Abhyudit Jain备注),但我还没有这样做,所以如果我尝试的话,我会为你弄乱语法。
干杯!加里。