如何在内部异步函数完成运行后调用外部函数返回
How do you call an outer functions return after an inner async function finishes running?
这是我的代码:
.filter('getUserName', function(User) {
return function(id) {
User.get({ _id: id }, function(user) {
return user.name;
});
};
});
我希望中间函数返回user.name
. User.get
是异步的,因此我只能在内部异步函数完成运行后从中间函数返回。
我知道异步代码完成运行后运行代码的 2 种方法:使用成功回调或成功承诺。但是,这两个都创建了一个内部函数,因此我的问题 - 我不知道如何运行代码
- 仅在异步函数完成并且
- 从中间函数返回。
这对于过滤器来说是一个糟糕的契合度,但就像一个智力练习一样,你可以让过滤器返回一些默认行为(即返回空白),直到数据被获取,一旦获取应用过滤器。这将需要过滤器$stateful
,这是非常浪费的 - 它将在每个消化周期上运行。
app.filter("foo", function($timeout){
var cache = {};
function genFoo(input){
$timeout(function(){
cache[input] = input + "foo!";
}, 1000);
}
var filter = function(input){
if (input in cache) return cache[input];
genFoo(input);
return "";
};
filter.$stateful = true;
return filter;
});
普伦克
不要将此作为过滤器:)
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- 如何在Javascript函数调用中循环变量
- Javascript:应为赋值或函数调用,但实际看到的却是表达式
- 如何远程检查JavaScript应用程序的函数调用堆栈
- javascript函数调用不起作用
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 如何通过函数调用设置图像的src
- 从全局函数调用Ember控制器上的方法
- 为什么Jquery$.ajax在函数调用中触发所有statusCode,即使调用成功
- JavaScript函数调用(arg1)(arg2)
- 打印链接时,将javascript函数调用到链接中
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 无法从JavaScript中的函数调用对象属性
- 对中的函数调用进行排序是回调的唯一方法
- 函数调用方法有什么用
- Javascript:JSHint:应为赋值或函数调用,但实际看到的却是表达式
- HTML5(Bootstrap)通过函数调用运行动画
- 函数调用不起作用
- 函数中的Javascript函数调用