我有这个使用命名空间的功能。我想让它异步。假设在点击某个按钮时调用了这个函数?
var ns = {
somemfunc: function (data) {
alert("hello");
}
}
编辑 - 很抱歉对此不清楚。我想通过将settimeout函数放在somefunc函数中来异步调用此函数。不知道怎么做。
提前致谢
答案 0 :(得分:0)
您可以通过在setTimeout
的定义中添加somefunc
块来异步调用此函数,请注意我在松散地使用术语异步,因为此函数实际上并没有异步工作。异步函数是一个执行某些工作需要花费一些时间来执行的函数,例如发出网络请求,聚合其结果然后向调用者报告以执行某种DOM刷新等等,它通常会报告回来在长时间运行的代码运行时,调用者使用回调或解析/拒绝承诺,事件队列未被阻止,并且可以继续处理其他操作,如果不是这样,则应用程序将无响应,直到长期运行的任务完成了计算。
你想在这里实现的并不是真正的异步,因为你只需要在2秒内安排在事件队列上运行的功能。
var ns = {
somemfunc: function (data) {
setTimeout(function() {
alert("hello");
}, 2000);
}
}
ns.somemfunc();
当调用ns.somefunc()
时,它现在设置为在2000ms(2秒)内在事件队列上执行函数somefunc
。记住Javascript是单线程的,任务被安排在事件队列上运行并将被连续处理。如果将超时设置为在2000ms之后运行该函数,但是之前的作业需要500ms来计算,那么我们实际上等待2500ms以便队列为该函数提供服务。