好多在线写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); } );
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。