Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript属性竞争条件_Javascript_Html_Cordova - Fatal编程技术网

javascript属性竞争条件

javascript属性竞争条件,javascript,html,cordova,Javascript,Html,Cordova,我有一个关于iPhone和Android的phonegap项目。问题似乎是表面上的种族状况,但我不明白它是如何发生的。用户可以单击一个按钮,该按钮具有设置对象属性的闭包回调,然后清除屏幕并加载主菜单。代码: button.onclick = function (employee) { return function () { employee.task = "some task"; returnToMenu(); } }(employees[i])

我有一个关于iPhone和Android的phonegap项目。问题似乎是表面上的种族状况,但我不明白它是如何发生的。用户可以单击一个按钮,该按钮具有设置对象属性的闭包回调,然后清除屏幕并加载主菜单。代码:

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中重新创建问题吗?只显示代码很难知道这里有什么。另外,使用JS
debugger
console.log()。如果(employee.task)
,则
employee
之前的样子是什么?我无法在手机上重现问题。今天早些时候,我与最终用户一起工作,他们能够多次复制它。这就是为什么调试起来如此困难的部分原因。