2014-11-11 7 views
0

Как я могу назвать свою функцию sankey_continue() после завершения .each? Я посмотрел на обещание, но не знаю, как его реализовать, или если есть другое решение. Любая помощь или предложения приветствуются.

function pattern() { 
       $.ajax({ 
        type: "POST", 
        url: "Dashboard.aspx/patterns", 
        data: '', 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (data) { 

         if (data.d != "0") { 


          //thePatterns = []; 
          var obj = $.parseJSON(data.d); 

          $.each(obj, function (i, v) { 

           svg.append('defs').append('pattern') 
            .attr('id', v.id_pattern) 
            .attr('patternUnits', 'userSpaceOnUse') 
            .attr('width', eval(v.w1)) 
            .attr('height', eval(v.h1)) 
            .append("svg:image") 
            .attr("xlink:href", v.data_pattern) 
            .attr("width", eval(v.w1)) 
            .attr("height", eval(v.h1)) 
            .attr("x", 0) 
            .attr("y", 0); 

          }); 

          sankey_continue(); 
         } 
        } //end success 
       }); //end ajax call 
      } 
+5

'$ .each' не является асинхронным, этот код в порядке. –

+0

Какова цель eval (v.w1) и прочее? –

+0

Как @JamesMcLaughlin говорит, что каждый не является асинхронным. Почему верить, что здесь есть проблема? Однако я бы предложил вам удалить использование 'eval'. –

ответ

1

JQuery.each не является асинхронным, даже если ваш вызов Ajax.

Предлагаю прочитать на jQuery.each и на этом great SO answer.

Удачи.

Смежные вопросы