目的是什么async
聚合物中的方法?我应该什么时候使用它?
现在我用它就像嗯,这个错误有点奇怪,也许异步会修复它-是的-id-did-yey。当我洒水时,它并没有给我对我的代码有任何信心async
就在出现一些计时错误时。
根据您使用的是 Polymer 0.5 还是 1.0,答案略有不同。在 1.0 中,更多操作是同步的,因此您可能不会看到对异步的那么多需求(此外,异步方法在 1.0 中的工作方式略有不同 https://www.polymer-project.org/1.0/docs/migration.html#element-methodsasync).
我们从 0.5 开始。大多数情况都与更改属性的影响有关。观察数据绑定或观察器中使用的属性是否发生变化。当您更改其中一项时
属性,该更改会发生任何副作用异步地,具有微任务计时。这意味着工作发生在当前事件处理程序返回之后,但是before处理下一个事件。
换句话说,如果我有这样的数据绑定:
<div id="output">{{someProperty}}</div>
假设我有以下代码:
this.someProperty = "New Value";
console.log(this.$.output.textContent); // logs "Old Value"
这就是异步困扰你的地方。如果你想要更新绑定的数据,你需要给数据绑定系统一个工作的机会。如果你移动那个console.log
语句转换为异步,因此稍后执行,您会得到预期的响应:
this.async(function() {
console.log(this.$.output.textContent); // logs "New Value"
});
大多数时候,您不需要查看数据绑定的 DOM 元素。但如果您这样做,或者您正在等待观察者的副作用,您可能需要异步。
在 Polymer 1.0 中,数据绑定和单属性观察者是同步的。多财产观察员和一些 DOM 操作 https://www.polymer-project.org/0.8/docs/devguide/local-dom.html#dom-api是异步的。
(虽然 API 与 JavaScript 不同,但这篇关于事件循环的 Dart 文章是我发现的描述事件循环和微任务队列的最佳文章:https://www.dartlang.org/articles/event-loop/ https://www.dartlang.org/articles/event-loop/)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)