2016-03-22 4 views
0

Ich möchte einen zusätzlichen Wert zu versprechen .done übergeben. Das Problem ist, dass console.log(dataToDownload) immer "b" druckt.JQuery Versprechen: Zugriff auf externe Variable oder Weitergabe von Ergebnissen an IIFE innerhalb.

var downloadData = { 
    'a': 'http://www.aaa.aa?callback=?', 
    'b': 'http://www.bbb.bb?callback=?', 
} 

var promises = []; 

for (dataToDownload in downloadData){ 

    promises.push($.get(downloadData[dataToDownload], {}, null, 'jsonp') 
     .done(function(results){ 

      console.log(dataToDownload) 
      console.log(results); 

     })) 
} 

$.when.apply($, promises).done(function(){ 

    console.log('Downloaded!') 

}) 

Ich habe versucht, IIFE:

.done((function(id){ 

      console.log(id) 
      console.log(results); 

     })(dataToDownload);)) 

Aber ich weiß nicht, wie man IIFE 'Ergebnisse' zu übergeben.

Was wäre die beste Lösung, um auf beide zugreifen zu können: results und dataToDownload innerhalb .done?

+0

können Sie bereits Zugriff auf 'dataToDownload', es in seiner lexikalischen Gültigkeitsbereich ist ... – elclanrs

+0

Ihr Problem kann dieses sein http://stackoverflow.com/questions/750486/javascript-closure-inside-loops -simple-practical-example – elclanrs

+0

@elclanrs: 'console.log (dataToDownload)' im ersten Beispiel gibt 'b' zweimal aus – LAdas

Antwort

0

console.log(downloadData[dataToDownload])

Verwandte Themen