2017-01-25 12 views
0

Я пытаюсь вызвать функцию после получения ответа от вызовов API. Как этоSlack API, работающий с двумя API

function saveScore(bot,result,message){ 
    getFirstScore(bot,result).then(function(fscore){ //API -1 
     if(fscore){ 
      getSecondScore(bot,result,null).then(function(sscore){ //API -2 
       if(fscore && sscore){ 
        var finalScores = "First score is " + fscore + " :innocent:" + "\n Second score is "+ sscore +" :blush: "; 
        var remindAttachment = util.reminderAttachment("",finalScores); 
        listAllScores(bot,message,remindAttachment); 
       } 
      },function(error){ 
       console.log('sscore error: ' + error); 
      }); 
     } 
    },function(error){ 
     console.log('fscore error: ' + error); 
    }); 
} 

function listAllScores(bot,message,remindAttachment){ 
    sendInstructions = function(response, convo){ 
     convo.say(remindAttachment); 
     convo.say("Take it to the next level:"); 
     convo.next(); 
     setTimeout(function(){   
     listScores(bot,message); 
     },2000); 
    }       
    bot.startPrivateConversation(message, sendInstructions); 
} 

Здесь, я хочу назвать listScores (бот, сообщение); функция после convo.say (напоминаниеAttachment);. Но сейчас загружается listScores (бот, сообщение); первый. Итак, я устанавливаю тайм-аут (не очень хороший подход) для listScores (бот, сообщение); для загрузки через некоторое время.

Есть ли лучший способ позвонить listScores (бот, сообщение); функция после convo.say (напоминаниеAttachment);

Редактировать

function listAllScores(bot,message,remindAttachment){ 
    sendInstructions = function(response, convo){ 
     convo.say(remindAttachment, function(error){ 
      console.log("error ::::::::::::::::::::",error); 
      if(error!=null) { 
       listScores(bot,message); 
      } 
     }); 
    }       
    bot.startPrivateConversation(message, sendInstructions); 
} 

ответ

0

изменить эту функцию convo.say(), чтобы иметь функцию обратного вызова в качестве параметра функции, а затем внутри этого обратного вызова "listScores (СЭП, сообщение)" функцию. как этот convo.say (remindAttachment, функция (ошибка) { если (ошибка! = NULL) { listScores (личинка, сообщение) } })

+0

спасибо за ответ. Пробовал использовать обратный вызов, но эта функция обратного вызова не вызвана. – NNR

+0

Можете ли вы дать мне фрагмент функции convo.say? –