gpt4 book ai didi

javascript - Angular : immediately return from ngClick function

转载 作者:行者123 更新时间:2023-11-29 21:30:52 27 4
gpt4 key购买 nike

我的页面上有一个下拉菜单,它实际上只是一个无序列表,其中每个菜单项如下所示:

<li ng-click='doCalc(5)'>Five</li>

现在,doCalc 调用的函数可能需要一点时间:

function doCalc(num) {
factorial(num);
}

这意味着菜单在 factorial 运行时保留在屏幕上。我希望 doCalc 立即返回,而不是等待 factorial 完成运行。

我知道如何使用无延迟 setTimeout 和 promise 来做到这一点。 但是这样做的 Angular 方法是什么?搜索“angular promise”会得到大量关于 HTTP 请求的结果,而在这里我只是做了一个简单的计算。

最佳答案

可以使用 $q 服务或 $timeout 服务创建 promise 。

function doCalc(num) {
return $q.when(factorial(num));
};

或者

function doCalc(num) {
return $timeout(function() {return factorial(num)}, 0);
};

Is there a preference for one or the other? If I have lots of async requests also going on in the page, will when be blocked?

$q 服务和$timeout 服务都使用$q 队列(在setTimeout).请注意,浏览器队列和 Angular $q 队列都在单个线程上运行。这意味着一旦 factorial 函数启动,它就会运行到完成。如果您担心 factorial 服务会导致其他异步操作出现问题,则需要通过多次调用 $q.when$ 来分解该函数timeout(两者最终都调用了 setTimeout)。

关于javascript - Angular : immediately return from ngClick function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36519483/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com