好多在线写pyhton的,都会用到Skulpt.js。
运行之后,可能会一直loop。
如何实现用户手动点“停止”按钮,停止程序。
不知道别人家是怎么实现的。
从网上找到一个方法:
原理就是:
先记录下默认的超时时间(也可以不记录,使用一个很大的数)
var defaultTimeLimit = Sk.execLimit;
需要停止的时候,修改超时时间,设置很短,等报错
Sk.execLimit = 1
自定义超时报错,把超时时间再改回来
var stopMsg = "Stopped (not really a Timeout)";
Sk.timeoutMsg = function() {
Sk.execLimit = defaultTimeLimit;
return stopMsg;
}运行报错那里,忽略掉这个错误。
Sk.misceval.asyncToPromise(function () {
return Sk.importMainWithBody("fileName", false, "code", true);
})then(
function (mod) {
console.log("success")
},
function (err) {
var msg = err.toString();
if(msg.indexOf(stopMsg)!=-1) return;
console.log(msg);
}
);
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。