我正在使用dart angular2开发一个webapp。当我提交表单时,浏览器卡住(处理时间可能很长)。有没有办法异步进行?
我的模板中有:
<form (ngSubmit)="onSubmit()"
和相应的方法:
onSubmit() async {
longProcess();
}
方法&#39; longProcess()&#39;不会呼叫服务器。只有本地计算。
感谢您的帮助。
答案 0 :(得分:1)
longProcess()
很可能已经执行了异步。
问题是浏览器只有一个线程。即使在处理异步处理的情况下,它也会在所有JavaScript运行的同一个线程中运行。 执行一个任务时,其他任务不能同时处于活动状态。 如果您可以将大任务拆分为许多较小的任务,然后将这些较小的任务称为异步,则可以在执行下一个较小的任务之前完成其他等待任务。
JavaScript可以利用WebWorkers创建其他内容。如果代码在这样的WebWorker线程中运行,则它不会阻塞主线程。
有关WebWorkers的更多详细信息,请参阅Web workers in Angular 2 Dart