Javascript 从AJAX请求获取有序响应

Javascript 从AJAX请求获取有序响应,javascript,jquery,ajax,asynchronous,google-translate,Javascript,Jquery,Ajax,Asynchronous,Google Translate,在这段代码中,我在for循环中将单个单词发送到googletranslate,并尝试将来自googletranslateapi的翻译响应与原始单词配对。然而,在这样做的过程中,我开始了解异步和同步之间的区别 现在的问题是如何继续利用异步AJAX调用的效率,但如何按照我发送给google translate的原始顺序捕获翻译 for (word in original_text) { $.ajax({ type: "GET", url: "http

在这段代码中,我在for循环中将单个单词发送到googletranslate,并尝试将来自googletranslateapi的翻译响应与原始单词配对。然而,在这样做的过程中,我开始了解异步和同步之间的区别

现在的问题是如何继续利用异步AJAX调用的效率,但如何按照我发送给google translate的原始顺序捕获翻译

    for (word in original_text) {

    $.ajax({
        type: "GET",
        url: "https://www.googleapis.com/language/translate/v2?",
        data: {key: my_Key, source: "en", target: "es", q: original_text[word]},
        dataType: 'json',
        success: function (result, status, xhr) {
            translated.push(result.data.translations[0].translatedText);
            alert(translated);
            if (translated.length === original_text.length) {
                var merged = {};
                for (word in original_text) {
                    merged[original_text[word]] = translated[word];
                }

                dfrd.resolve(JSON.stringify(merged));
            }
        },
        error: function (xhr, status, errorMsg) {
            alert(xhr.status + "::" + xhr.statusText + "::" + xhr.responseText);
        }

    });
基本上,Promises.all()允许您执行以下操作:

var promises = [];
for(var i = 0; i < 5; i++){
promises.push($.ajax("SomeURL"));
}
 Promise.all(promises).then(function(datas){
  for(var y = 0; y < datas.length; y++){
    var data = datas[y]; //Your data in correct order   
  }
});
var承诺=[];
对于(变量i=0;i<5;i++){
promises.push($.ajax(“SomeURL”);
}
Promise.all(promises).then(函数(数据){
对于(变量y=0;y

你可以根据你的情况调整它。主要思想-收集到一个阵列,然后使用promise。所有

我相信这就是你现在的问题太棒了,谢谢!请给我一点时间,让我明白这个承诺。这样我才能消化所有这些。@Lance如果我的回答有帮助,请把它提出来,作为一个解决方案。祝您今天过得愉快