カクカクしかじか

技術的なアレコレ

JavaScripのPromiseで特定の値を条件によってPOSTせずに成功扱いにしたい時の実装メモ

はじめに

JavaScriptで特定の値を条件によってPOSTしたくない時があるのですが、その実装を同僚がしていて参考になったので個人的なメモとして後々の振り返り用に放流しておきます。
また、後述するコード例は業務上のコードを抽象化したものなのでところどころ分かりにくい部分があるかもしれません。

やりたいこと

ある条件の時は特定の値を含むPOSTを行わないで、Promiseだけ成功したことにしたい。

実装方法

擬似的にresolveを返してパラメーターに含めなくします。
前提として、今回は実際の業務でもあった「2つのPromiseが成功して、はじめて成功になるパターン」で以下の例を記載します。

// trueの時はPOSTして、falseの時はPromiseを空のままresolveして擬似的にパラメーターに含めないで良くする
const hoge = 真偽値を返す条件式 ? axios.post( 'URL', { param: this.hoge }) : Promise.resolve();

// 後続処理
const fuga = axios.post( 'URL', { param: this.fuga }).then(() => true);

// 2つの処理のPromiseがtrueだったら成功になる
const res = await Promise.all([hoge, fuga]).then(() => true);

構文

基本的な書き方は以下の通りです。

真偽値の式 ? postする記述 : Promise.resolve();

終わりに

JavaScriptRubyと同じく全然理解が足りないので、こうした細かい実装テクニックの引き出しを増やしていこうと思った次第です!