2017-10-16 2 views
0

VueJs를 사용하여 작은 샘플 응용 프로그램을 만들고 C# REST API를 만들어 SQL Server 백엔드에서 데이터를 저장하고 검색했습니다.자바 스크립트 - 약속이 너무 일찍 완료 되었습니까?

테스트를 위해 양식이있는 간단한 웹 페이지를 만들어 "메모"를 작성했습니다.

saveData() 
    { 
     let promiseStack = []; 
     var jsondata = JSON.stringify(this.note); 

     promiseStack.push(this.$http.post('REST_API/note', jsondata)); 

     Promise.all(promiseStack).then(data => 
     { 
      this.$http.get('REST_API/note'); 
      this.$router.push({ name: 'viewnotes', params: { id: data[0].body.id }}) 
     }, error => 
     { 
      console.log(error); 
     });  
    } 

나는 모든 검색 GET 요청을 백엔드에서 '저장'작업이 완료 될 때까지 기다린 발행하는 약속을 사용하려고 : 메모는 다음 기능 '하고 saveData()에 의해 저장된다 약속이 성취되면 메모합니다.

그러나 약속 내의 get 요청은 데이터를 반환하지 않습니다. 나중에 수동으로 get 요청을하면 이전에 저장 한 데이터를 검색합니다.

그래서 C# REST API를 살펴 보았습니다. 현재 createNote (...), getAllNotes (...)의 두 가지 기능이 있습니다. 이 함수들이 호출 될 때, StreamWriter를 사용하여 milisecond 정밀도를 사용하여 파일 시스템에 로깅했습니다. 내가 보는 것은 'getAllNotes'다음에 'createNote'가 호출된다는 것입니다. 그래서 나는 API가 올바르게 작동하고 있다고 생각하지만, 내가 약속을 사용하는 방식은 무언가 잘못되었다고 생각합니다.

누군가가 힌트를 가지고 있을까요?

UPDATE는

  • 나는 GET 요청이 크롬의 개발자 도구 모음을 사용하여 데이터를 반환하지 않는 것을 알고있다. 응답은 네트워크 탭의 개발자 도구 모음 요청이 올바른 순서로 제출 된 것을 알 수

  • 빈, 그래서 "POST"요청 내가 문제를 발견 보인다

+0

GET 요청이 데이터를 반환하지 않는다는 것을 어떻게 알 수 있습니까? – deceze

+1

브라우저의 네트워크 검사자가 요청이 어떤 순서로 실행되는지 말합니까? – deceze

+2

네트워크 탭에 올바른 순서로 요청이 표시되지만 시스템 호출이 잘못된 순서로 발생하면 API가 깨진 부분처럼 들립니다. – ssube

답변

0

처음으로 발행된다. 내가 '저장'링크에 'href'태그가있어서 초기 라우팅이 시작되었습니다. 의도 한 'POST'와 'GET'은 올바르게 시작되었지만, 링크에 'href'태그가 있기 때문에 다른 곳에 'GET'이있었습니다.

태그를 제거 했으므로 의도 한대로 작동합니다.

관련 문제