我需要在javascript中实现一个以下一种方式运行异步进程的函数:
什么是最好的方法?可以访问两个函数(异步和UI)还是通过回调的全局变量?
答案 0 :(得分:2)
不使用任何外部库等,一种简单的方法是使用某种形式的封装来返回一个停止方法。
这是一个简单的例子。
contenteditable="false"

function doAsyncStuff() {
var i = setInterval(function () {
console.log("tick");
}, 1000);
return function stop() {
console.log("Stop called");
clearInterval(i);
}
}
var stop = doAsyncStuff();
document.querySelector("button").onclick = stop;

你甚至可以扩展它以返回多个功能,如恢复重启等。
答案 1 :(得分:1)
使用事件的东西可以正常工作。
function main() {
main.running = true
doSomething()
}
function doSomething() {
if (!input.checked) {
console.log("checking")
window.setTimeout(doSomething,1000);
}
else {
main.running = false;
}
}
function changeHandler(event) {
if (event.target.checked == false && main.running == false) {
main();
}
}
var input = document.getElementById('check');
input.onchange=changeHandler;
main.running = false;

<input id="check" type="checkbox">
&#13;