有时我的编码方式错误,我的聚合物1.0网络应用程序和东西停止正常工作。就像将数据设置为某个自定义元素,然后立即尝试从中读取一些数据(这取决于刚刚设置的数据)(因为我不知道更好)。有时这不起作用。大多数时候this.async
会帮助我,但有时却不会。但是,setTimeout
在这种情况下从未让我失望过。大多数时候在没有提供等待时间的情况下调用setTimeout
也会起作用。
很长一段时间以来,我认为this.async(function(){...})
与setTimeout(function(){...})
相同。因为this.async
中的代码有时会无法看到自定义元素数据中的更改,而setTimeout
中的代码则不会。
这两种方法是否以不同的方式实施?
答案 0 :(得分:7)
this.async
将您的函数添加到事件队列的开头,而setTimeout
将其添加到结尾。如果您使用setTimeout
,则在调用函数之前可能已执行其他函数,从而导致您在数据中看到的更改。
来自this.async
的{{3}}:
另一方面,如果没有指定等待时间,则运行具有微任务计时的任务(在当前方法完成之后,但在处理事件队列中的下一个事件之前)
setTimeout会将您的函数添加到队列的末尾,如documentation的“添加消息”部分所述。
调用
setTimeout
将在作为第二个参数传递的时间后向队列添加消息。如果队列中没有其他消息,则立即处理该消息;但是,如果有消息,则setTimeout消息必须等待处理其他消息。因此,第二个参数表示最短时间而不是保证时间