如何编写在 javascript 中返回错误的函数
How to write a function that returns an error in javascript
在猫鼬中.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")
相关文章:
- XMLHttpRequest:需要使用ajax中的成功和错误函数
- Javascript 错误:函数预期
- 未捕获的引用错误:函数未使用 onchange 定义
- 如何让jQueryajax执行错误函数
- 未定义未捕获的引用错误函数
- $.ajax在跨域url上不返回错误函数
- jQuery.ajax+php5.3-始终执行错误函数
- javascript未捕获类型错误函数ajax
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- Ajax 请求在 HandleUnauthorizedRequest 之前命中错误函数
- 引用错误:“函数”未定义
- 黑莓 10 级联 ajax 调用从 javascript 总是执行错误函数
- Ajax 调用弹簧控制器回调错误函数
- 未定义未捕获的引用错误函数
- 主干.js - n捕获异常:语法错误:函数构造函数:无法编译函数
- 引用错误:函数未定义错误
- “未捕获的引用错误:(函数)未定义”与焦点事件
- JavaScript 未捕获的引用错误函数未定义 单击时
- 引用错误:函数未定义
- 类型错误: [函数名称] 不是函数,在猫鼬和节点.js中