目次
従来の方法
はエレガントな方法です
ホームページ WeChat アプレット ミニプログラム開発 小さなプログラムの非同期メソッドで例外をエレガントにキャッチする方法

小さなプログラムの非同期メソッドで例外をエレガントにキャッチする方法

Dec 22, 2021 am 10:07 AM
async await アプレット

ネイティブ アプレットの非同期メソッドで例外をエレガントにキャッチするにはどうすればよいですか?次の記事では、小さなプログラムでの async await 非同期プログラミングのエレガントな使用方法を紹介します。

小さなプログラムの非同期メソッドで例外をエレガントにキャッチする方法

最近、オープン ソース クラウド開発コミュニティ アプレットの作成を開始しました。作成の過程で、開発とテストのプロセスに役立ついくつかのトリックをゆっくりと模索してきました。 。この記事では、ネイティブ アプレットの非同期メソッドからの例外をエレガントにキャッチする方法について説明します。

従来の方法

ES7 以降では、非同期プログラミングに async await 構文をよく使用します。例外をキャッチしたい場合は、通常、次の 2 つの方法があります:

try catch

async func(){
     //do something
}
try {
    const res = await func()
} catch (error) {
    //handle error
}
ログイン後にコピー

最初は、例外をキャッチするための try catch です。try catch を使用すると非常に便利です。 例外を処理するために、後続のメソッドの処理が妨げられることもあります。ただし、開発プロセスでは、複数の非同期メソッドが存在することがよくあります。try catch の多用は、書くのが不快なだけではありません。 、しかし、決してエレガントではありません。

Promise.catch()

async func(){
     //do something
}

const res = await func().catch(error=>{
    //handle error
})
ログイン後にコピー

Promise オブジェクト try catch 内で、チェーン呼び出しメソッドを使用して、例外を処理します。 try catch と比較すると、Promise.catch() は確かに記述がはるかに簡単で、見た目もよりエレガントです。

しかし、エラーをキャッチした後にメソッドの継続実行を停止したい場合は、 Promise.catch() それを行う方法はありません。次の例は

async func(){
     //do something
}

const res = await func().catch(error=>{
    // 即使return也无效
    return
})
// 如果有错误的话我就不执行了
ログイン後にコピー

はエレガントな方法です

await-to-js github リンク

https://github.com/scopsy/await-to-js

await-to-js このライブラリは多くの人によく知られているはずです。非同期リクエストのラッパーです。非同期リクエストのエラーを処理するために使用できます。上記のニーズに従って、変更されていますawait-to- を使用します。 js の例は次のとおりです。

import to from 'await-to-js';

async func(){
     //do something
}

const [err,res] = await to(func())
if(err){
    //handle error
    return
}
// 如果有错误的话我就不执行了
ログイン後にコピー

非同期メソッドを to() メソッドのパラメータとして使用すると、戻り値が返されます。 は配列の構造化によって取得され、配列 No. 1 つの値は捕捉されたエラーで、2 番目の値は通常の実行からの戻り値です。

await-to-js の実装原則も非常に単純です。つまり、Promise.catch() を使用して例外を取得し、結果を返します。ソースコードは次のとおりです

export function to<T, U = Error> (
	promise: Promise<T>,
	errorExt?: object
  ): Promise<[U, undefined] | [null, T]> {
	return promise
	  .then<[null, T]>((data: T) => [null, data])
	  .catch<[U, undefined]>((err: U) => {
		if (errorExt) {
		  const parsedError = Object.assign({}, err, errorExt);
		  return [parsedError, undefined];
		}
  
		return [err, undefined];
	  });
  }
  
  export default to;
ログイン後にコピー

小規模プログラムで使用

小規模プログラムではnpmパッケージを使用するのが不便なので、ソースを直接取り出すことができます非同期プログラミングはエレガントに行われますが、私自身の変換方法は次のとおりです。

// lib/awaitTo.js
module.exports = function to(promise, description="unknown") {
	const pages = getCurrentPages()
	const route = pages[pages.length - 1].route||&#39;unknown&#39;
	description = `[${route}]---[${description}]`
	console.time(description)
	return promise
		.then(function (data) {
			console.timeEnd(description)
			return [null, data];
		})
		.catch(function (err) {
			wx.showToast({
				title: &#39;请求失败&#39;,
				icon: "none"
			})
			return [err, undefined];
		});
}
ログイン後にコピー

非同期メソッドの実行時に

getCurrentPages() を使用して対応するページ ルートを取得し、2 番目のパラメーターを独自のものに変更しました非同期メソッドの説明、非同期メソッドが呼び出されるたびに、実行時間 コンソールに出力されます。実際の使用例は次のとおりです。

const to = require("../../lib/awaitTo")
const [err, res] = await to(db.collection("post").add({
        data: form
}),"addPost")
if (err) {
        // 处理我的错误
        return
}
// 成功后执行的逻辑
ログイン後にコピー
コンソールによって出力される実行時間の出力は次のとおりです。出力形式は

[ルーティング ページ]---[メソッドの説明] です。 ]: 実行時間

小さなプログラムの非同期メソッドで例外をエレガントにキャッチする方法

もちろん、私のカプセル化方法は私自身のコードのためのものですが、入り口を統一するなど、実際の業務に合わせて変更することもできます。埋め込みポイントなどの開発効率が大幅に向上します!

概要

クラウド開発を使用する場合、ネイティブ言語を使用して開発エクスペリエンスを作成する必要があります。比較的閉鎖的な環境では、多くの Web 側のメソッドが使用できなくなります。最近の調査で、私も次のことを発見しました。ネイティブ アプレットの開発エクスペリエンスを向上させるさまざまな方法があり、将来的には更新される予定です。

[関連する学習の推奨事項:

小さなプログラム開発チュートリアル]

以上が小さなプログラムの非同期メソッドで例外をエレガントにキャッチする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

非同期は es6 または es7 用ですか? 非同期は es6 または es7 用ですか? Jan 29, 2023 pm 05:36 PM

非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

Python を使用して WeChat アプレットを開発する Python を使用して WeChat アプレットを開発する Jun 17, 2023 pm 06:34 PM

モバイル インターネット技術とスマートフォンの普及により、WeChat は人々の生活に欠かせないアプリケーションになりました。 WeChat ミニ プログラムを使用すると、アプリケーションをダウンロードしてインストールすることなく、ミニ プログラムを直接使用して、いくつかの簡単なニーズを解決できます。この記事では、Python を使用して WeChat アプレットを開発する方法を紹介します。 1. 準備 Python を使用して WeChat アプレットを開発する前に、関連する Python ライブラリをインストールする必要があります。ここでは、wxpy と itchat の 2 つのライブラリを使用することをお勧めします。 wxpy は WeChat マシンです

小さなプログラムでも反応できますか? 小さなプログラムでも反応できますか? Dec 29, 2022 am 11:06 AM

ミニプログラムはreactを利用することができます 使い方: 1. 「react-reconciler」に基づいてレンダラーを実装し、DSLを生成します; 2. DSLを解析してレンダリングするためのミニプログラムコンポーネントを作成します; 3. npmをインストールし、開発者ビルドを実行しますツール内の npm; 4. パッケージを独自のページに導入し、API を使用して開発を完了します。

WeChat ミニ プログラムにカードめくり効果を実装する WeChat ミニ プログラムにカードめくり効果を実装する Nov 21, 2023 am 10:55 AM

WeChat ミニ プログラムでのカードめくり効果の実装 WeChat ミニ プログラムでは、カードめくり効果の実装は、ユーザー エクスペリエンスとインターフェイス インタラクションの魅力を向上させることができる一般的なアニメーション効果です。以下では、WeChat アプレットでカードめくりの特殊効果を実装する方法と、関連するコード例を詳しく紹介します。まず、ミニ プログラムのページ レイアウト ファイルに 2 つのカード要素を定義する必要があります。1 つは前面のコンテンツを表示するため、もう 1 つは背面のコンテンツを表示するためです。具体的なサンプル コードは次のとおりです: &lt;!--index.wxml- ->&l

アリペイ、希少文字ライブラリを収集・補完する「漢字拾い-希少文字」ミニプログラムを開始 アリペイ、希少文字ライブラリを収集・補完する「漢字拾い-希少文字」ミニプログラムを開始 Oct 31, 2023 pm 09:25 PM

10月31日の当サイトのニュースによると、今年5月27日、アント・グループは「漢字拾いプロジェクト」の立ち上げを発表し、最近新たな進展を迎えた:アリペイが「漢字拾い-珍しい文字」ミニプログラムを開始協会からコレクションを収集する レア文字は、レア文字ライブラリを補完し、アリペイでのレア文字入力方法の改善に役立つように、レア文字に異なる入力エクスペリエンスを提供します。現在、ユーザーは「漢字ピックアップ」「珍文字」などのキーワードで検索することで「珍文字」アプレットに入ることができる。ミニプログラムでは、ユーザーがシステムで認識・入力されなかった珍しい文字の画像を送信し、確認後、Alipay のエンジニアがフォントライブラリに追加エントリを作成します。当サイトでは、発音が不明瞭な珍しい単語を対象とした最新の単語分割入力方法をミニプログラムで体験できることに注目しました。ユーザー解体

uniapp がミニ プログラムと H5 の間で迅速な変換を実現する方法 uniapp がミニ プログラムと H5 の間で迅速な変換を実現する方法 Oct 20, 2023 pm 02:12 PM

uniapp がミニ プログラムと H5 の間で迅速な変換を実現するには、具体的なコード例が必要ですが、近年、モバイル インターネットの発展とスマートフォンの普及に伴い、ミニ プログラムと H5 は不可欠なアプリケーション形式となっています。クロスプラットフォーム開発フレームワークとして、uniapp は一連のコードに基づいて小規模プログラムと H5 間の変換を迅速に実現し、開発効率を大幅に向上させます。この記事では、uniapp がミニ プログラムと H5 の間で迅速な変換を実現する方法と、具体的なコード例を紹介します。 1. uniapp uniaの紹介

ミニプログラム登録の操作方法 ミニプログラム登録の操作方法 Sep 13, 2023 pm 04:36 PM

ミニ プログラムの登録操作手順: 1. 個人 ID カード、法人営業許可証、法人 ID カードおよびその他の提出資料のコピーを準備します; 2. ミニ プログラム管理のバックグラウンドにログインします; 3. ミニ プログラム設定ページに入ります; 4. 「基本設定」を選択; 5. 出願情報を入力; 6. 出願資料をアップロード; 7. 出願申請を送信; 8. 審査結果を待ちます。出願が不合格の場合は、理由に応じて修正してください9. 出願のフォローアップ操作は可能です。

Python で簡単なチャット プログラムを作成するためのチュートリアル Python で簡単なチャット プログラムを作成するためのチュートリアル May 08, 2023 pm 06:37 PM

実装アイデア: チャット ルームのさまざまな機能を処理するために、スレッドのサーバー側を確立します。x02 クライアントの確立はサーバーよりもはるかに簡単です。クライアントの機能はメッセージの送受信と、特定の文字を特定の規則に従って入力するため、クライアント側では、メッセージ受信専用とメッセージ送信専用の 2 つのスレッドを使用するだけで、さまざまな機能を使用できます。使用しないでください。

See all articles