如何将此JS代码转换为异步代码
How to convert this JS code to be asynchronous
给定一组相互依赖的选择框(在a中选择某些东西以值填充B),我希望构建一个具有可能值组合的对象。
# out = { FieldNameA: [ { key: 'A', value: '', dep: { FieldNameB: [ { key: 'B', value: '', dep: [] } ] } } ] }
这是我正在使用的代码。
function getFieldValues(selectors) {
if (selectors.length == 0) {
return [];
}
var fieldInfo = selectors.shift();
var field = document.querySelector(fieldInfo['selector']);
for (var i=0; i<field.options.length; i++) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
field.selectedIndex = i;
field.dispatchEvent(evt);
var option = field.options[i];
var fieldName = fieldInfo['name'];
if (!result[fieldName]) {
result[fieldName] = [];
}
var fieldData = { key: option.value, value: option.innerHTML };
alert('starting child retrieval of data');
var dependencies = getFieldValues(selectors.slice(0));
if (dependencies) {
fieldData['dependencies'] = dependencies;
}
result[fieldName].push(fieldData);
}
return result;
}
out = getFieldValues(selectors);
console.log(JSON.stringify(out));
我需要使其异步,以便在调度事件代码之后添加延迟,以便填充第二个选择中的值。但是,我尝试转换此代码失败了。
处理每个循环的async的简单方法是这样做
function myfunc(callback) {
var dfd = jQuery.Deferred();
dfd.done(callback);
var A = [var1,var2,var3]
var index = 0;
var next = function() {
if(index<A.length) {
var item = A[index];
index++;
// Do what you want.
setTimeout(next, 1); // or only next();
} else {
dfd.done();
}
};
next();
}
如果你想让它异步并添加延迟,你可以使用javascript Timing Event
setTimeout(function(){<Code you want to execute>}, <delay in milliseconds>);
检查:http://www.w3schools.com/js/js_timing.asp
希望能有所帮助
相关文章:
- 将javascript代码转换为jquery代码时出错
- 将代码转换为可重用对象
- 将mongoose javascript代码转换为typescript.此引用丢失
- 将JQuery代码转换为等效的JavaScript代码
- 如何在AEM 6.1中使用sightly将jsp代码转换为html
- 使用键/代码转换JavaScript数组
- 将html代码转换为十六进制
- 将一些 C# 代码转换为 Javascript
- 想要将jquery代码转换为纯JavaScript或AngularJS
- 使用 ng-repeat将此 html 代码转换为角度
- 将Javascript代码转换为ReactJS
- 将python代码转换为javascript代码
- 如何将文件类型从Coldfusion代码转换为javascript代码
- 将PHP代码转换为Javascript,将数字读取为句子
- 将js代码转换为jQueryMobile时出错
- 将jQuery切换代码转换为JavaScript
- 将伪代码转换为代码
- 有没有一个工具可以将React Elements的javascript代码转换为JSX
- 将一段JavaScript代码转换为PHP
- 如何将一行咖啡脚本代码转换为多行