我知道在javascript中通过引用复制对象,但这很奇怪。代码运行后字符串发生变化
var project = projects[projectIndex];
var projectName = project[0]["repository"]["name"];
console.log("type" + " of name " + projectName + " in " + ownerFolderName);
projectTasks.push(function(callback){
omnifocus.create_folder_if_possible_in_group(projectName, ownerFolderName, function() {
callback();
});
});
在这个片段中循环运行多次。使用console.log
登录时,projectName
正确无误。但是,当用于匿名函数(在projectTasks
中)时,值为总是与最后一项的值相同。
例如:如果它循环三次,它将记录“1”,“2”,“3”(这是正确的)。但是,在匿名函数中,它将以“3”值运行三次。
的完整代码可以在这里:https://github.com/gcamp/github-omnifocus-sync/blob/master/index.js
因为它是一个异步操作,你的PROJECTNAME是已经由时间“3”它输入你的匿名功能。 – 2014-09-04 03:25:27