我如何在客户端使用“ future ”?
并且,如何在没有catch事件的情况下阻止代码执行?
import 'dart:html';
import 'dart:convert';
import 'dart:async';
Map data;
Future<String> ft_get_pseudo()
{
InputElement button;
InputElement text;
text = querySelector('[name="pseudo"]');
button = querySelector('[name="push"]');
button.onClick.listen((_) => text.value);
}
void main()
{
WebSocket wss;
String encode;
data = new Map();
wss = new WebSocket('ws://127.0.0.1:4040/ws');
ft_get_pseudo().then((name)
{
data['pseudo'] = name;
encode = JSON.encode(data);
wss.onOpen.listen((_) => wss.send(encode));
wss.onMessage.listen((msg) => print("Msg received : ${msg.data}"));
});
}
我在ecmascript 6中看到了Promise函数,有一种使用它的方法,还是这个主意?
HTML:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script type="application/dart" src="client.dart"></script>
<link rel="stylesheet" href="style.css" type="text/css">
<title>Client</title>
</head>
<body>
<div id="console">
</div>
<input type="text" name="pseudo" size="20" placeholder="pseudo">
<input type="button" name="push" value="Send">
</body>
</html>
最佳答案
我认为您想做这样的事情,但我还不完全了解您要完成的工作。
您可以仅添加一条您有不同需求的评论吗?
Map data;
void main() {
//(querySelector('[name="push"]') as ButtonInputElement).onClick.listen(btnClickHandler);
(querySelector('[name="push"]') as ButtonInputElement).onClick.first.then(btnClickHandler);
// this would work too, because every element has the click event.
// querySelector('[name="push"]').onClick.listen(btnClickHandler);
}
void btnClickHandler(MouseEvent e) {
String name = (querySelector('[name="pseudo"]') as TextInputElement).value;
data = {'pseudo': name};
String encode = JSON.encode(data);
WebSocket wss = new WebSocket('ws://127.0.0.1:4040/ws');
wss.onOpen.listen((_) => wss.send(encode));
wss.onMessage.listen((msg) => print("Msg received : ${msg.data}"));
}
关于dart - 客户端,那么()还是其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22734574/