[解決済み] プロミス、追加パラメータを渡してチェーンする
2022-10-14 09:19:15
質問
例えば、約束事。
var P = new Promise(function (resolve, reject) {
var a = 5;
if (a) {
setTimeout(function(){
resolve(a);
}, 3000);
} else {
reject(a);
}
});
を呼び出した後
.then()
メソッドをプロミスで呼び出します。
P.then(doWork('text'));
次に
doWork
関数はこのようになります。
function doWork(data) {
return function(text) {
// sample function to console log
consoleToLog(data);
consoleToLog(b);
}
}
プロミスやテキストパラメータからデータにアクセスするために、doWorkでインナー関数を返さないようにするにはどうすればよいでしょうか?インナー関数を回避するコツはあるのでしょうか?
どのように解決するのですか?
あなたは
Function.prototype.bind
を使用して、次のように第一引数に値を渡す新しい関数を作成します。
P.then(doWork.bind(null, 'text'))
を変更することができます。
doWork
に変更します。
function doWork(text, data) {
consoleToLog(data);
}
今すぐ
text
は実際には
'text'
で
doWork
と
data
はプロミスで解決された値になります。
注意してください。 プロミスチェーンには必ず拒否ハンドラを付けてください。
動作中のプログラムです。 BabelのREPLでのライブコピー
function doWork(text, data) {
console.log(text + data + text);
}
new Promise(function (resolve, reject) {
var a = 5;
if (a) {
setTimeout(function () {
resolve(a);
}, 3000);
} else {
reject(a);
}
})
.then(doWork.bind(null, 'text'))
.catch(console.error);
関連
-
[解決済み] jQueryのディファレンシャルとプロミス - .then() vs .done()
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] 既存のコールバックAPIをプロミスに変換するにはどうすればよいですか?
-
[解決済み] Promise.allのエラー処理
-
[解決済み】PromiseとObservablesの違いは何ですか?
-
[解決済み] .then()チェーンで以前のプロミス結果にアクセスするにはどうすればよいですか?
-
[解決済み】一部の約束が拒否されても、すべての約束が完了するまで待つ
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ループ内のJavaScriptクロージャ - シンプルな実用例
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法