У меня есть функция (selectWord ()), которая собирает выбранные слова, которая вызывает функцию (view (word [i])), передавая каждое слово в цикле.
selectWord ():
$('#button').on('click', function() {
var text = "";
var lang = $("#lang").text();
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
var word = text.split(" ");
$('#load').html("");
var promises = [];
for (var i = 0; i < word.length; i++) {
promises.push(Promise.resolve(view(word[i], lang)));
}
Promise.all(promises).catch(function(err) {
console.log("error");
return err;
}).then(function() {
$.each(promises, function(key, val) {
$.each(val, function(k, v) {
console.log("promises " + k + " " + v + " " + v[k] + '<br>');
$('#div').append("promises " + k + " " + v + " " + v[k] + '<br>');
});
});
});
}
});
вид ():
function view(word, lang) {
var html = "";
var id = "";
img = "";
ids = [];
fullLemmas = [];
gramCats = [];
setTimeout(wiki(word, lang), 1000);
setTimeout(function() {
for (var i = 0; i < ids.length; ++i) {
if (i == 0) {
getImg(ids[i], word);
wiki = fullLemmas[i];
gramCategory = gramCats[i];
}
}
}, 2000);
setTimeout(function() {
for (var i = 0; i < ids.length; ++i) {
if (i == 0) {
id = ids[i];
html += '<li class="col-12 col-md-6 col-lg-3"><div class="cnt-block equal-hight" style="height: 349px;"><figure><img id ="' + id + '" src="' + img + '" class="img-responsive" alt=""></figure><h3><a href="https://es.wikipedia.org/wiki/' + fullLemmas[i] + '">"' + word + ' (' + gramCats[i] + ')' + '"</a></h3>';
}
html += '<p><a href="https://es.wikipedia.org/wiki/' + fullLemmas[i] + '">' + fullLemmas[i] + ' (' + gramCats[i] + ')</a></p>';
}
html += '</li>';
return html;
}, 3000);
}
Функция представления в свою очередь вызывает две функции, которые выполняются через JSON с getJSON (), проблема в синхронности. Я использовал setTimeOut () и Promises, но я не понимаю, что он возвращает.
При отображении слов сохраняются только данные последнего слова.