JavaScript消息队列执行时间

时间:2017-10-26 17:03:34

标签: javascript android node.js message-queue event-loop

作为免责声明,我在这里不够深入,我的朋友实际上正面临着这个问题,而且我对正在发生的事情感到好奇。

我来自更多javascript / node.js背景,据我了解

let a = 10
setTimeout(() => (a = 20))
a = 0;

a = 20将始终执行最后一个,换句话说,在a = 0

之后

我的朋友有一段类似的代码,但是是为Android编写的

// handler is created somewhere in this same thread
a = 10;
handler.sendMessage(20);
a = 0;

他声称,处理程序的handleMessage方法有一个对a的引用,并在队列就绪时将a设置为20.

问题是在某个时间之后,在一个不同的线程中,当他检查一个值时,大部分时间它是20但很少是0。他也非常确定handleMessage已经被执行了。这是怎么发生的?

不能保证handleMessage像javascript中的示例一样最后运行吗?如果不是我如何优雅地解决这个问题?

对不起我可怕的伪代码,但我真的很好奇,如果有人能指出我正确的方向,我会非常感激。

0 个答案:

没有答案