链接在js中返回promise的函数

时间:2018-03-09 08:56:45

标签: javascript node.js es6-promise

我的想法是我需要针对数据库运行多个操作,但仅限于我需要。例如,如果没有要插入的项目,则没有插入调用。

function dbOperations(params){
    functionInsert(params)
    .then(functionUpdate(params))
    .then(functionDelete(params))
    ...
}

然后我

function functionInsert(params){
  if (params){
    //DO a call against DB which returns a promise 
   return knex.insert().transacting(trx);
  }else{
    //if no params, no need to do anything, just let the next .then() fire next function
    return Promise.resolve()
  }
}

通过这样做,代码运行正常,但是当没有params时,我看到这个警告Warning: .then() only accepts functions but was passed: [object Object]所以很明显我做错了。

当没有参数时,如何处理这种情况?

LE:对于数据库访问我正在使用knex。我编辑了上面的functionInsert。

1 个答案:

答案 0 :(得分:1)

警告本身正在解释。 .then期望函数作为参数,但是你要传递函数functionUpdate的结果。

您可能希望将语句包装在匿名函数中,正如@Thilo在评论中所指出的那样:

function dbOperations(params){
    functionInsert(params)
      .then(() => functionUpdate(params))
      .then(() => functionDelete(params))
      ...
}