我试图利用stack_trace提供的Chain对象,如下所示:
import 'dart:async';
import 'package:stack_trace/stack_trace.dart';
main() async {
print('Hello world: ${console_test.calculate()}!');
Chain.capture(() async {
try {
await testFunction();
} catch(e,st) {
print(Trace.format(new Chain.forTrace(st)));
}
});
}
Future testFunction() async {
throw new Exception("TEST");
}
Hello world: 42!
main.dart 4:1 main.<async>.<fn>.<async>
import 'dart:async';
import 'package:stack_trace/stack_trace.dart';
main() async {
print('Hello world: ${console_test.calculate()}!');
Chain.capture(() {
return testFunction();
}, onError: (e, stackTrace) => print(Trace.format(new Chain.forTrace(stackTrace))));
}
Future testFunction() async {
throw new Exception("TEST");
}
我得到更多的预期输出:
Hello world: 42!
main.dart 17:3 testFunction.<async>
dart:async _Completer.completeError
main.dart 4:1 testFunction.<async>
dart:async Future.Future
main.dart 4:1 testFunction
main.dart 11:26 main.<async>.<fn>
package:stack_trace Chain.capture
main.dart 10:16 main.<async>
我做错什么了吗?Chain与整个Async/Await不兼容吗?
您使用的是什么版本的Dart和stack_trace
?在带有stack_trace
1.2.3
的Dart1.9.0-edge.44028
上,删除console_test
行后,得到以下输出:
test.dart 16:3 testFunction.<async>
dart:async _Completer.completeError
test.dart 17:2 testFunction.<async>
dart:async Future.Future.microtask
test.dart 7:25 main.<async>.<fn>.<async>
package:stack_trace Chain.capture
test.dart 5:16 main.<async>
还值得注意的是,您实际上并不需要将trace.format
与chain
一起使用。您可以只使用chain.terse
,这也将保留异步间隙。
异步操作在线程中执行,与主应用程序线程分开。当应用程序调用方法异步执行操作时,应用程序可以在异步方法执行其任务时继续执行。 示例 下面通过一个例子来理解这个概念。在示例程序中使用IO库接受用户输入。 是一种同步方法。它将阻止执行函数调用之后的所有指令,直到方法完成执行。 等待输入。它停止执行并且在收到用户输入之前不再执行任何操作。 以上示例将产生以下输出 - 在计算中,当某个事件在继续之前等待事件
我正在为一家德国公司评估Dart,将各种Java程序移植到Dart,并对结果进行比较和分析。在浏览器中,飞镖轻松获胜。对于服务器来说,软件性能似乎是一个严重的问题(请看我的这个问题),但这基本上得到了缓解。 现在我正在移植一些“简单”的命令行工具,我没想到会有任何严重的问题,但至少有一个问题。一些工具确实会发出HTTP请求来收集一些数据,独立的Dart虚拟机只以异步方式支持它们。纵观所有我能找到的
gRPC是否支持以下服务器和客户端之间的通信方案?1.客户端连接到服务器并调用waitMessages等方法。然后,客户端正在等待来自服务器的一些消息。2.服务器不时向客户端发送消息。例如,调用客户端的某个方法。3.客户端与服务器断开连接 我不喜欢通过轮询服务器来实现这个方案。我想调用服务器方法一次,然后等待消息。
问题内容: 我们正在与节点合作,主要用于内部项目,并了解使用该技术的最佳方法。 并非来自特定的异步背景,学习曲线可能是一个挑战,但是我们已经习惯了框架和学习过程。 使我们两极分化的是,何时才是使用同步代码与异步代码的最佳时间。我们目前使用的规则是,如果任何东西与IO进行交互,那么它必须通过回调或事件发射器(即给定的)是异步的,但是可以将任何未使用IO的其他项构造为同步函数(此方法还将取决于函数本身
问题内容: 我想从Redis + Hiredis + libevent中获得尽可能多的收益。 我正在使用以下代码(没有简短的说明) 要进行编译,请在系统中使用假定的libevent,redis和hiredis。 我好奇何时需要做?在每个回调中一次或(如示例所示)。我有什么办法可以提高性能? 我得到大约6000-7000 req / s。使用到这个基准,复杂化的东西当试图大的数字(如10K请求数)
问题内容: 在我的应用程序(node / express / redis)中,我使用一些代码同时更新数据库中的多个项目: 我可以确定在方法返回之前将执行所有这些操作吗?我关心的是异步处理。由于我不在db操作中使用回调函数,因此可以吗? 问题答案: 使用MULTI / EXEC命令创建命令队列并连续执行它们。然后使用回调发送回连贯的响应(成功/失败)。请注意,您必须使用Redis的AOF来避免这种情