2013-09-30 1 views
0

Извините, это может быть не новый вопрос, но я новичок в JS, и я не получил никаких конкретных примеров для этого.Функция Javascript возвращает value.call другую функцию в соответствии с первыми функциями Возвращаемое значение

function find(param){    
     $.each(array,function(i,elem){    
      if(elem.id==param){ 
       return i; 
      } 
     }) 
     return null; 
    } 
//after calling this function i want to perform actions based on result 
$(document).on("click","#elem",function(){ 
     //want to make this part synchronous 
     $.when(i=find(param1)).then(function{ 
     if(i==null) 
      {//do something 
      } 
     else{//do something 
      } 
}) 
} 

я хочу, чтобы выполнить действия, основанные на возвращаемом значении находит function.and также условия должны быть проверены только Атером функции поиска закончен.

+0

Что конкретно вы пытаетесь сделать? Сейчас я действительно не понимаю, что это значит. –

+1

Вот и все. Вы можете стать умнее с назначением внутри условного выражения, но то, что у вас есть, - это базовый шаблон - присвоить возвращаемое значение, проверить его, а затем сделать что-то на основе результата. – RobG

+0

Я отредактировал код, что он точно делает. – Nemesis

ответ

1

Функция поиска всегда будет возвращать значение null.

$.each(array,function(i,elem){    
    if(elem.id==param){ 
     return i; //this is each iteration callback scope not find function scope 
    } 
}) 

Функция находки должна выглядеть следующим образом:

function find(param){ 
    var matched=null;    
    $.each(array,function(i,elem){    
     if(elem.id==param){ 
      matched=i; 
     } 
    }) 
    return matched; 
} 

Надеется, что это полезно для вас.

+0

thanks.this объяснил, почему я не мог получить ожидаемые результаты. – Nemesis

+0

Я делал обратные вызовы правильно. это была настоящая проблема. @Chickenrice спасибо. – Nemesis