如何编写在 javascript 中返回错误的函数

How to write a function that returns an error in javascript

本文关键字:错误 函数 返回 何编写 javascript      更新时间:2023-09-26

在猫鼬中.js 每次查询后,函数都会返回(错误,结果)。我想编写我自己的功能来做同样的事情。

我以为答案是使用承诺,所以我写了这个

  login: (user) ->
    q.Promise (resolve, reject, notify) ->
      console.log resolve
      if _.has(user, 'password')
        dashboard.users.find(user).exec().then (err, results) ->
          if err then reject("Error occurred with the database")
          if results then resolve(results) else reject("User not found")
      else
        reject("A password is required for login")
Auth.login(testuser).then (d) ->
    console.log d, "done"

但是经过研究,我发现这是一种反模式,代码不起作用(承诺永远不会被解决/拒绝)。所以现在我不知道该怎么办。

要将函数中的错误作为承诺返回,通常有两种方法可以生成被拒绝的承诺:

  • 您的承诺库的reject功能
  • then回调中抛出异常或从中返回被拒绝的承诺将拒绝生成的承诺

这与为异步函数构建承诺具有相同的效果,该异步函数使用错误参数调用其节点样式回调。您的代码将被重写为

  login: (user) ->
    if _.has(user, 'password')
      q(dashboard.users.find(user).exec()).then (results) ->
        if results 
          results
        else
          throw new Error("User not found")
      , (err) ->
        throw new Error("Error occurred with the database")
    else
      q.reject("A password is required for login")