이것은 내 첫 번째 게시물이므로 올바르게 처리하기를 바랍니다. 이것은 약속에 대한 나의 첫 번째 노출이고 나는 아직도 그것을 얻을 수 없다. 우리 프로젝트는 불행히도 비동기 대기를 지원하지 않습니다. 나는 sqlite보다 pouchdb를 사용하고있다.값을 반환하기 전에 typescript/javascript를 기다리는 방법
this.recipes는 레시피 페이지를 표시하는 데 사용됩니다. 그러나 처음에는 비어있는 상태로 돌아오고 각 레서피가 추가 된 후에는 항상 하나의 래서 피보다 뒤쳐집니다. 나는 모든 약속이 끝나기 전에 내가 이것을 돌려받는 것 때문에 이것이 확실하다고 확신한다. 나는 코드에서 내가 최종 수익을 약속 한 바깥에 매달아 놓았다는 것을 알았지 만 약속을 지킬 때 "RecipesPage.ts"에 "type void [type] void는 할당 할 수 없다"라는 오류가 발생합니다.
여러분이 제공 할 수있는 지원에 감사 드리며이를 위해 올바른 방법을 배우고 기쁘게 생각합니다. 미리 감사드립니다.
public getAllRecipes() {
this.recipeBook = new Array<Recipe>();
this.recipeDatabase.allDocs
({
include_docs: true,
}).then(docs => {
this.objectArray = docs.rows.map(row => {
return row.doc;
})
}).then(function(){
for (let object of this.objectArray) {
this.myRecipe = this.convertObjectToRecipe(object);
this.recipeBook.push(this.myRecipe);
}
})
return this.recipeBook;
}
기다리지 마십시오. 자바 스크립트가 작동하지 않습니다. 아마도 [비동기 작업에서 값을 반환하는 방법] (http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)을 읽어야합니다. 대답은 당신이하지 않는다는 것입니다. 대신 비동기 응답을 프로그램하고 비동기 작업 완료에 대한 알림을받을 때만 다음 작업을 수행합니다. – jfriend00