2017-01-12 2 views
1

Что я пытаюсь сделать, это добавить в массив некоторые данные после завершения ответа. Im пытается проверить, если réponse готов, но без успеха:Сделайте что-нибудь после завершения ответа?

this.$http.post('/blog/article/' + articleid + '/comment', article_comments) 
.then(function (response) { 
    self.comment_id = response.data.comments.id; 
    this.user = response.data.comments.user; 
    this.dataReady = true; 
    }, function (response) { 

}); 

if (this.dataReady == true) { 
    this.comments.push({ 
     comment: this.comment, 
     downvotes: 0, 
     upvotes: 0, 
     user:this.user, 
     date_ago: moment(Date.now()).fromNow() 
    }) 
    this.loadComments(); 
    console.log(this.comments); 
} 

Как я могу это исправить? Потому что мне нужны данные из ответа, а затем для ввода массива, или я получу ошибку, если im попытается вставить массив до того, как ответ будет завершен.

+0

Вы могли бы использовать больше обещаний. Если вы вернете ответ, вы можете связать '.then' с другим' .then (function (response) {...}) '. Он сделает эти асинхронные вызовы с правильной логической последовательностью – cassioscabral

ответ

1

Вы можете поместить следующий код, который вы хотите выполнить после получения ответа в методе: скажем updateOtherVars:

if(this.dataReady == true){ 
     this.comments.push({ 
      comment: this.comment, 
      downvotes: 0, 
      upvotes: 0, 
      user:this.user, 
      date_ago: moment(Date.now()).fromNow() 

      }) 
      this.loadComments(); 
       console.log(this.comments); 
     } 

и вызвать этот метод из this.$http блока, как следующее:

this.$http.post('/blog/article/' + articleid + '/comment', article_comments).then(function(response){ 
      self.comment_id = response.data.comments.id; 
      this.user = response.data.comments.user; 
      this.dataReady = true; 
      this.updateOtherVars() //Call method from here 
     },function(response){ 

     }); 
+0

Я пробовал все, и я не пробовал: S tnx man – None

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