javascript属性竞争条件
我有一个关于iPhone和Android的phonegap项目。问题似乎是表面上的种族状况,但我不明白它是如何发生的。用户可以单击一个按钮,该按钮具有设置对象属性的闭包回调,然后清除屏幕并加载主菜单。代码:javascript属性竞争条件,javascript,html,cordova,Javascript,Html,Cordova,我有一个关于iPhone和Android的phonegap项目。问题似乎是表面上的种族状况,但我不明白它是如何发生的。用户可以单击一个按钮,该按钮具有设置对象属性的闭包回调,然后清除屏幕并加载主菜单。代码: button.onclick = function (employee) { return function () { employee.task = "some task"; returnToMenu(); } }(employees[i])
button.onclick = function (employee) {
return function () {
employee.task = "some task";
returnToMenu();
}
}(employees[i]);
用户返回主菜单后,他们可以单击一个按钮,加载一个显示所有用户的屏幕。如果某个员工设置了该任务属性,则应为该员工的按钮另外设置格式
if (employee.task)
// style the button being created for this employee
不知何故,如果单击的速度足够快,格式化就没有完成。如果单击“上一步”(回到主菜单)并重新加载屏幕,则现在已完成格式化。鉴于上面的代码,我看不出在加载菜单后,
employee.task
如何可能返回undefined。这里发生了什么?您能在JSFIDLE中重新创建问题吗?只显示代码很难知道这里有什么。另外,使用JSdebugger
和console.log()。如果(employee.task)
,则employee
之前的样子是什么?我无法在手机上重现问题。今天早些时候,我与最终用户一起工作,他们能够多次复制它。这就是为什么调试起来如此困难的部分原因。