これは私の最初の投稿ですので、私は正しいことを望みます。これは私の最初の約束の約束であり、私はまだそれを得ることができない3時間です。私たちのプロジェクトは残念ながらAsync Waitをサポートしていません。私はsqlite上のpouchdbを使用しています。値を返す前にtypescript/javascriptを待つ方法
this.recipesはレシピのページを表示するために使用されます。ただし、最初は空の状態に戻り、各レシピが追加された後で常に1つのレシピより遅れます。私は確信しています。すべての約束が完了する前に、私はthis.recipeBookを返すからです。最終的なリターンは、約束の外にぶら下がっているコードを認識していますが、私はそれを約束すると、私のRecipesPage.tsに "type void [type] [assign]
皆様のご支援をいただき、誠にありがとうございます。事前にお越しいただき、ありがとうございます。
これはRecipesPage.tsで私の呼び出しです:
this.recipes = this.database.getAllRecipes();
これはdatabase.service.ts方法である:
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;
}
あなたは待たないでください - JavaScriptはそのようには機能しません。おそらく、[非同期操作から値を返す方法](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call)をお読みください。答えはあなたがしないということです。代わりに、非同期応答をプログラムし、非同期操作の完了を通知された場合にのみ次の操作を実行します。 – jfriend00