【发布时间】:2016-03-30 22:02:36
【问题描述】:
我创建了一个{{findby}} 助手,它对于从数组中挑选一个项目非常有用,但我遇到了一个问题。助手不喜欢在一个 promiseArray 的数组上调用 findBy()。
因此修改了助手来执行此操作:
export function findby([array, key, value]) {
let isPromiseArray = Ember.typeOf(array.then) === 'function';
if (isPromiseArray) {
array.then((arr) => {
return arr.findBy(key, value) || null;
});
} else {
return array.findBy(key, value) || null;
}
}
export default Ember.Helper.helper(findby);
当然,如果传递的数组恰好是 PromiseArray,则在尝试调用 findBy() 之前使用 then()。
问题是在这种情况下我似乎无法返回任何内容。从then() 内部返回似乎并没有真正关闭辅助函数,因此辅助函数返回未定义。
如果我尝试这样做:
return array.then((arr) => {
return arr.findBy(key, value) || null;
});
然后从助手返回的只是承诺本身。
对于助手来说,这个问题似乎很普遍:有没有办法从助手中的 promise/then() 函数返回数据?我想知道我想做的事情是否可以通过助手来实现?
【问题讨论】:
-
@nem 好的,谢谢,这看起来很有用!
标签: ember.js