[解決済み] 関数の変数を返す前に、プロミスが終了するのを待つには?
2022-04-14 15:40:16
質問
私はまだ約束事について悩んでいますが、ここのコミュニティのおかげで少し前進しています。
私は、Parseデータベースに問い合わせる簡単なJS関数を持っています。それは結果の配列を返すことになっていますが、明らかにクエリの非同期性(それゆえ約束)のために、関数は結果の前に戻り、私には未定義の配列が残されています。
この関数をプロミスの結果を待つようにするには、どうすればよいのでしょうか?
以下は私のコードです。
function resultsByName(name)
{
var Card = Parse.Object.extend("Card");
var query = new Parse.Query(Card);
query.equalTo("name", name.toString());
var resultsArray = [];
var promise = query.find({
success: function(results) {
// results is an array of Parse.Object.
console.log(results);
//resultsArray = results;
return results;
},
error: function(error) {
// error is an instance of Parse.Error.
console.log("Error");
}
});
}
解決方法は?
を返す代わりに
resultsArray
は、結果配列に対するプロミスを返し、その後に
then
これには、呼び出し側が関数が非同期I/Oを実行していることを知ることができるという利点もあります。JavaScriptの並行処理のコーディングはこれに基づいています。
この質問
を使えば、より広い視野で考えることができます。
function resultsByName(name)
{
var Card = Parse.Object.extend("Card");
var query = new Parse.Query(Card);
query.equalTo("name", name.toString());
var resultsArray = [];
return query.find({});
}
// later
resultsByName("Some Name").then(function(results){
// access results here by chaining to the returned promise
});
クエリでパースプロミスを使用する他の例は、以下で見ることができます。 パース自身のブログ記事 .
関連
-
Vueの要素ツリーコントロールに破線を追加する説明
-
jQueryのコピーオブジェクトの説明
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] 再描画のためにキャンバスをクリアする方法
-
[解決済み] 明示的なプロミス構築のアンチパターンとそれを回避する方法とは?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
jq は html ページとデータを動的に分割する。