「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > AJAX呼び出し用のプレースホルダ関数

AJAX呼び出し用のプレースホルダ関数

2024 年 8 月 26 日に公開
ブラウズ:869

Placeholder function for AJAX calls

最近、バックエンド エンドポイントを配置せずにユーザー インターフェイス (UI) を作成する必要がありました。アクションが進行中であることをユーザーが認識できるように、UI の応答性を可能な限り高めることに重点が置かれました。

これは主に、AJAX 呼び出しが行われたときに UI がそのことを示し、呼び出しが完了したときにそれに応じて更新する必要があることを意味します。

UI の開発を支援するために、AJAX 呼び出しをシミュレートする関数を作成しました。この関数は次のことができます:

  • 実際の AJAX 呼び出しによる遅延をシミュレートするために遅延 (ミリ秒単位) を受け入れます
  • AJAX 呼び出しが失敗したときにシミュレーションが失敗する確率を受け入れる
  • 指定されたペイロードを返す

TypeScript コードは次のとおりです (docstring を含む完全なコード サンプルの要点を参照してください):

export async function delay(
  timeout: number,
  probability?: number,
  result?: T
): Promise {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (!probability || probability  1) {
        resolve(result);
        return;
      }

      const hit = Math.random();
      if (hit 



この機能を使用するには:

async function handleButtonClick() {
  // Update the UI to show a loading indicator.

  try {
    // highlight-start
    // Make the call take 3 seconds, with a 10% chance of failure,
    // and return an array of users.
    const result = await delay(3000, 0.9, [
      {
        email: '[email protected]',
        username: 'User 1',
      },
    ]);
    // highlight-end

    // Update the UI when the call completes succesfully.
  } catch (err: any) {
    // Update the UI when the call fails.
  }
}

以下の同じ関数の JavaScript バージョン:

export async function delay(timeout, probability, result) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      if (
        !probability ||
        typeof probability !== 'number' ||
        probability  1
      ) {
        resolve(result);
        return;
      }

      const hit = Math.random();
      console.log(hit, probability);
      if (hit 



この投稿は最初に cheehow.dev で公開されました

リリースステートメント この記事は次の場所に転載されています: https://dev.to/cheehow/placeholder-function-for-ajax-calls-51ap?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3