我可以 return 来自 Meteor 助手的异步值(Promise)吗?
Can I return an async value (a Promise) from a Meteor helper?
Promise 是一种对象类型,用作未来结果的占位符,
例如 HTTP 请求的主体,或 Meteor 方法调用的 return 值。
基本上任何强制您传递回调以接收其回调的函数
return 值(而不只是 returning 它)被认为是一个异步函数,
它返回的值可以用 Promise 来表示。
Meteor 中的问题是 helper
方法仅适用于
同步值——例如网页中的文本,或
迷你蒙戈系列。当你 return 一个人的 Promise 时,帮助者
- 显示
[object Promise]
而不是解析值
- 承诺解决时不更新
存在一些解决此问题的尝试:simple:reactive-method
和 arsnebula:reactive-promise,但它们要求您将助手更改为特定样式,或者仅使用 Meteor.call
而不是简单地允许 returned 通用承诺。
是否存在我忽略的问题,或者是否有解决方案?我已经尝试了一段时间,如果没有官方答案,我可能会自己做一些事情。
即使对于其他库,我认为现在的答案是使用包 deanius:promise
(免责声明:我编写了它,并从其他一些包的作者那里得到了输入)。
它完成了问题的要求,并添加了一些不错的功能,例如可控错误和加载消息。
Promise 是一种对象类型,用作未来结果的占位符, 例如 HTTP 请求的主体,或 Meteor 方法调用的 return 值。 基本上任何强制您传递回调以接收其回调的函数 return 值(而不只是 returning 它)被认为是一个异步函数, 它返回的值可以用 Promise 来表示。
Meteor 中的问题是 helper
方法仅适用于
同步值——例如网页中的文本,或
迷你蒙戈系列。当你 return 一个人的 Promise 时,帮助者
- 显示
[object Promise]
而不是解析值 - 承诺解决时不更新
存在一些解决此问题的尝试:simple:reactive-method
和 arsnebula:reactive-promise,但它们要求您将助手更改为特定样式,或者仅使用 Meteor.call
而不是简单地允许 returned 通用承诺。
是否存在我忽略的问题,或者是否有解决方案?我已经尝试了一段时间,如果没有官方答案,我可能会自己做一些事情。
即使对于其他库,我认为现在的答案是使用包 deanius:promise
(免责声明:我编写了它,并从其他一些包的作者那里得到了输入)。
它完成了问题的要求,并添加了一些不错的功能,例如可控错误和加载消息。