提问人:Severus 提问时间:4/17/2023 最后编辑:jcubicSeverus 更新时间:4/17/2023 访问量:65
如何在 jquery.terminal 中使用 exceptionHandler
how do i use exceptionHandler in jquery.terminal
问:
我正在jquery终端中使用不同的api做一些事情,但是,如果用户犯了错误,错误消息如下所示
法典:
gemini: function(a){
$.ajaxSetup({async: false});
$.get('https://api.github.com/repos/'+a, function(x){
b = x.name;
c = x.id;
d = x.license.name;
e = x.svn_url;
});
this.echo('name: '+b);
this.echo('id: '+c);
this.echo('license: '+d)
this.echo('.zip: '+e+'/archive/master.zip');
},
我的问题是如何在可能的错误中发送小消息。
答:
1赞
perona chan
4/17/2023
#1
JavaScript 仍然需要代码来等待数据请求的结果。 浏览器中提供了代码来替换 jQueryasync
await
fetch
var gemini = async (a) => {
var x = await fetch("https://api.github.com/repos/" + a);
var b = x.name;
var c = x.id;
var d = x.license.name;
var e = x.svn_url;
this.echo("name: " + b);
this.echo("id: " + c);
this.echo("license: " + d);
this.echo(".zip: " + e + "/archive/master.zip");
};
1赞
jcubic
4/17/2023
#2
这个例外很好,因为你可以很容易地找到错误发生的位置,但如果你想隐藏它,那么你可以选择只用于此。但请注意,如果您有 Promise,则需要将其退回,否则终端将不会看到该 Promise 被拒绝。exceptionHandler
const term = $('body').terminal(function(command) {
if (command === 'foo') {
this.echo(x);
} else if (command === 'bar') {
return async_function().then(() => {
this.echo(x);
});
}
}, {
exceptionHandler: function(e) {
this.error(e.message);
}
});
term.exec('foo');
term.exec('bar');
function async_function() {
return Promise.resolve();
}
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jquery.terminal/js/jquery.terminal.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/jquery.terminal/css/jquery.terminal.min.css"/>
</head>
<body>
</body>
</html>
而且标签似乎是错误的,[Command] 表示这是内部错误,但这只是来自拒绝 promise 的用户错误。
评论
0赞
Severus
4/18/2023
如果用户在第一个代码中没有出错,但在第二个代码中出错,则忽略错误,并且第一个数据显示如下(files.catbox.moe/7pyrz2.jpeg)
0赞
jcubic
4/19/2023
@Severus哪一秒?您的问题中只有一个代码。我的演示有两个示例,并且都可以工作。我已经明确写道,如果你不这样做,你需要从解释器返回一个承诺,图书馆将不知道有被拒绝的承诺。这就像在终端之外抛出一个错误。你能展示你的代码吗?没有看到你的代码,我什么也帮不上忙。
评论