停止 Javascript 另一个函数的函数执行
Stop Javascript Function execution from another Function
有什么方法可以停止从另一个函数执行被调用的函数吗?
我有以下代码:-
function MainFunction() { //a long code that runs for few time };
MainFuntion();
<button onclick="(Here I want some thing to stop MainFunction())">Stop the running script </button>
所以基本的想法是return一个函数来自另一个函数
我认为您正试图停止从一个函数调用其他函数。如果是,那么您需要将被调用的函数放在条件中,以便您可以控制执行。
如果我的理解不正确,请详细说明你想做什么,为什么要停止函数的执行。
JavaScript 通常是单线程的 - 这意味着当一个函数在浏览器中执行时,没有其他代码可以同时 运行 - 包括事件处理程序,例如 onclick
(它们只会在函数完成后被触发)。因此,在这种情况下,您不能从代码中中断函数的执行。
有两种解决方法:
较长的 运行ning 函数可能会故意中断,从而允许执行其他代码。
//set this to true from an event handler to stop the execution
var cancelled = false;
function longRunningFunction() {
if (cancelled) {
return;
}
// do some work, but not all
// save your progress to be able to resume when called again
if (!done) {
// release control, so that handlers can be called, and continue in 10ms
setTimeout(longRunningFunction, 10);
}
}
使用web workers。它们允许 运行 并行执行代码,但有一些限制并且并非所有浏览器都支持。
您可以在调用 MainFunction 时传递一个参数,例如取消。所以,如果你想让函数开始,你传入一个参数“0”,如果你想让它停止,你可以用一个不是“0”的参数再次调用函数,比如“1”。这是一个工作示例:
function MainFunction(cancel) {
var yourcode;
if (cancel == 0) {
yourCode = setInterval(function() {
//Put your code here, this is an example:
document.getElementById('div').style.color = "red";
}, 1);
}
if (cancel == 1) {
clearInterval(yourCode);
document.getElementById('div').style.color = "black";
}
}
<html>
<head>
<title>My website</title>
</head>
<body>
<button id="btn" onclick="MainFunction(0)">Start</button>
<button onclick="MainFunction(1)">Stop</button>
<div id="div">This division can change colour</div>
</body>
</html>
您可以使用 setTimeout
和 clearTimeout
something.onclick('timeout()')
something.onclik('myStopFunction()')
var myVar;
function timeout() {
myVar = setTimeout(()=>{MainFuntion(); }, 3000);
}
function myStopFunction() {
clearTimeout(myVar);
}
有关更多信息,请查看此 link https://www.w3schools.com/jsref/met_win_cleartimeout.asp
有什么方法可以停止从另一个函数执行被调用的函数吗?
我有以下代码:-
function MainFunction() { //a long code that runs for few time };
MainFuntion();
<button onclick="(Here I want some thing to stop MainFunction())">Stop the running script </button>
所以基本的想法是return一个函数来自另一个函数
我认为您正试图停止从一个函数调用其他函数。如果是,那么您需要将被调用的函数放在条件中,以便您可以控制执行。
如果我的理解不正确,请详细说明你想做什么,为什么要停止函数的执行。
JavaScript 通常是单线程的 - 这意味着当一个函数在浏览器中执行时,没有其他代码可以同时 运行 - 包括事件处理程序,例如 onclick
(它们只会在函数完成后被触发)。因此,在这种情况下,您不能从代码中中断函数的执行。
有两种解决方法:
较长的 运行ning 函数可能会故意中断,从而允许执行其他代码。
//set this to true from an event handler to stop the execution var cancelled = false; function longRunningFunction() { if (cancelled) { return; } // do some work, but not all // save your progress to be able to resume when called again if (!done) { // release control, so that handlers can be called, and continue in 10ms setTimeout(longRunningFunction, 10); } }
使用web workers。它们允许 运行 并行执行代码,但有一些限制并且并非所有浏览器都支持。
您可以在调用 MainFunction 时传递一个参数,例如取消。所以,如果你想让函数开始,你传入一个参数“0”,如果你想让它停止,你可以用一个不是“0”的参数再次调用函数,比如“1”。这是一个工作示例:
function MainFunction(cancel) {
var yourcode;
if (cancel == 0) {
yourCode = setInterval(function() {
//Put your code here, this is an example:
document.getElementById('div').style.color = "red";
}, 1);
}
if (cancel == 1) {
clearInterval(yourCode);
document.getElementById('div').style.color = "black";
}
}
<html>
<head>
<title>My website</title>
</head>
<body>
<button id="btn" onclick="MainFunction(0)">Start</button>
<button onclick="MainFunction(1)">Stop</button>
<div id="div">This division can change colour</div>
</body>
</html>
您可以使用 setTimeout
和 clearTimeout
something.onclick('timeout()')
something.onclik('myStopFunction()')
var myVar;
function timeout() {
myVar = setTimeout(()=>{MainFuntion(); }, 3000);
}
function myStopFunction() {
clearTimeout(myVar);
}
有关更多信息,请查看此 link https://www.w3schools.com/jsref/met_win_cleartimeout.asp