Jadual Kandungan
Kaedah tradisional
Dalam program kecil, tidak mudah untuk kami menggunakan pakej npm, jadi kami boleh terus mengeluarkan kod sumber dan menggunakannya sahaja Jika kami mengubah suainya, kami boleh melakukan pengaturcaraan asynchronous dengan elegan Kaedah pengubahsuaian saya sendiri adalah seperti berikut.
Apabila menggunakan pembangunan awan, anda perlu menggunakan bahasa ibunda untuk menulis untuk pengalaman pembangunan Persekitaran yang agak tertutup menjadikan banyak kaedah sisi web tidak dapat digunakan dalam penerokaan baru-baru ini banyak cara untuk meningkatkan pengalaman pembangunan applet asli, yang akan dikemas kini pada masa hadapan.
Rumah applet WeChat Pembangunan program mini Bagaimana untuk menangkap pengecualian secara elegan dalam kaedah tak segerak dalam program kecil

Bagaimana untuk menangkap pengecualian secara elegan dalam kaedah tak segerak dalam program kecil

Dec 22, 2021 am 10:07 AM
async await Program mini

Bagaimana untuk menangkap pengecualian secara elegan dalam kaedah tak segerak dalam applet asli? Artikel berikut akan memperkenalkan kepada anda penggunaan async menunggu pengaturcaraan tak segerak dalam program kecil saya harap ia akan membantu anda!

Bagaimana untuk menangkap pengecualian secara elegan dalam kaedah tak segerak dalam program kecil

Baru-baru ini saya mula menulis applet komuniti pembangunan awan sumber terbuka Dalam proses menulis, saya perlahan-lahan meneroka beberapa helah yang membantu dalam proses pembangunan dan ujian . Artikel ini membincangkan cara untuk menangkap pengecualian secara elegan dalam kaedah tak segerak dalam program mini asli.

Kaedah tradisional

Selepas ES7, kami sering menggunakan sintaks async await untuk pengaturcaraan tak segerak Jika kami ingin menangkap pengecualian, biasanya terdapat dua cara:

cuba tangkap

async func(){
     //do something
}
try {
    const res = await func()
} catch (error) {
    //handle error
}
Salin selepas log masuk
Pertama,

menangkap pengecualian Penggunaan try catch sememangnya boleh mengendalikan pengecualian dengan sangat mudah, dan juga boleh menghalang kaedah seterusnya daripada diteruskan , semasa proses pembangunan, kami selalunya mempunyai lebih daripada satu kaedah tak segerak Menggunakan sejumlah besar try catch bukan sahaja tidak menyenangkan untuk ditulis, tetapi juga pastinya tidak elegan. try catch

Promise.catch()

async func(){
     //do something
}

const res = await func().catch(error=>{
    //handle error
})
Salin selepas log masuk
Objek Promise adalah dalaman

, kita boleh menggunakan kaedah panggilan berantai untuk mengendalikan ia tidak normal. Berbanding dengan try catch, try catch sudah tentu lebih mudah untuk ditulis dan kelihatan lebih elegan. Promise.catch()

Tetapi apabila kita ingin menghentikan pelaksanaan berterusan kaedah selepas menangkap ralat, maka

tiada cara untuk melakukannya, seperti yang ditunjukkan dalam contoh berikutPromise.catch()

async func(){
     //do something
}

const res = await func().catch(error=>{
    // 即使return也无效
    return
})
// 如果有错误的话我就不执行了
Salin selepas log masuk
Cara yang elegan

pautan github await-to-js

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

Ramai orang patut tahu tentang perpustakaan ini Ya, ia adalah pembalut untuk permintaan tak segerak yang boleh digunakan untuk mengendalikan ralat dalam permintaan tak segerak Menurut keperluan kami di atas, contoh penggunaan await-to-js adalah seperti berikut: await-to-js<🎜. >

dengan menukar kaedah tak segerak kami Sebagai parameter kaedah
import to from &#39;await-to-js&#39;;

async func(){
     //do something
}

const [err,res] = await to(func())
if(err){
    //handle error
    return
}
// 如果有错误的话我就不执行了
Salin selepas log masuk
, nilai pulangan diperoleh melalui

memusnahkan tatasusunan to() Nilai pertama tatasusunan ialah ralat yang ditangkap, dan nilai kedua ialah nilai pulangan bagi pelaksanaan biasa. Prinsip pelaksanaan

juga sangat mudah, iaitu, gunakan

untuk mendapatkan pengecualian dan kemudian kembalikan hasilnya dalam tatasusunan Kod sumber adalah seperti berikut: await-to-jsPromise.catch()

digunakan dalam applet
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;
Salin selepas log masuk

Dalam program kecil, tidak mudah untuk kami menggunakan pakej npm, jadi kami boleh terus mengeluarkan kod sumber dan menggunakannya sahaja Jika kami mengubah suainya, kami boleh melakukan pengaturcaraan asynchronous dengan elegan Kaedah pengubahsuaian saya sendiri adalah seperti berikut.

Saya memperoleh laluan halaman yang sepadan dengan pelaksanaan kaedah tak segerak melalui
// 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];
		});
}
Salin selepas log masuk
Selepas menukar parameter kedua kepada saya sendiri

penerangan kaedah tak segerakgetCurrentPages(), setiap Apabila. kaedah tak segerak dipanggil, masa pelaksanaan akan dikeluarkan pada konsol . Contoh penggunaan sebenar adalah seperti berikut:

Output masa pelaksanaan yang dicetak oleh konsol adalah seperti berikut, format cetakan ialah
const to = require("../../lib/awaitTo")
const [err, res] = await to(db.collection("post").add({
        data: form
}),"addPost")
if (err) {
        // 处理我的错误
        return
}
// 成功后执行的逻辑
Salin selepas log masuk

[Halaman penghalaan] ---[ Penerangan kaedah]: Masa pelaksanaan

Bagaimana untuk menangkap pengecualian secara elegan dalam kaedah tak segerak dalam program kecilSudah tentu, kaedah enkapsulasi saya adalah untuk kod saya sendiri Anda juga boleh mengubah suai mengikut perniagaan sebenar anda, seperti a pintu masuk bersatu untuk titik terkubur Ya, ia boleh meningkatkan kecekapan pembangunan!

Ringkasan

Apabila menggunakan pembangunan awan, anda perlu menggunakan bahasa ibunda untuk menulis untuk pengalaman pembangunan Persekitaran yang agak tertutup menjadikan banyak kaedah sisi web tidak dapat digunakan dalam penerokaan baru-baru ini banyak cara untuk meningkatkan pengalaman pembangunan applet asli, yang akan dikemas kini pada masa hadapan.

[Cadangan pembelajaran berkaitan:

Tutorial Pembangunan Program Mini

]

Atas ialah kandungan terperinci Bagaimana untuk menangkap pengecualian secara elegan dalam kaedah tak segerak dalam program kecil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah async untuk es6 atau es7? Adakah async untuk es6 atau es7? Jan 29, 2023 pm 05:36 PM

async ialah es7. async dan await ialah penambahan baharu kepada ES7 dan merupakan penyelesaian untuk operasi asynchronous/wait boleh dikatakan sebagai gula sintaktik untuk modul bersama dan fungsi penjana, menyelesaikan kod tak segerak dengan semantik yang lebih jelas. Seperti namanya, async bermaksud "tak segerak".

Bangunkan applet WeChat menggunakan Python Bangunkan applet WeChat menggunakan Python Jun 17, 2023 pm 06:34 PM

Dengan populariti teknologi Internet mudah alih dan telefon pintar, WeChat telah menjadi aplikasi yang sangat diperlukan dalam kehidupan orang ramai. Program mini WeChat membenarkan orang ramai menggunakan program mini secara langsung untuk menyelesaikan beberapa keperluan mudah tanpa memuat turun dan memasang aplikasi. Artikel ini akan memperkenalkan cara menggunakan Python untuk membangunkan applet WeChat. 1. Persediaan Sebelum menggunakan Python untuk membangunkan applet WeChat, anda perlu memasang perpustakaan Python yang berkaitan. Adalah disyorkan untuk menggunakan dua perpustakaan wxpy dan itchat di sini. wxpy ialah mesin WeChat

Bolehkah program kecil menggunakan tindak balas? Bolehkah program kecil menggunakan tindak balas? Dec 29, 2022 am 11:06 AM

Program mini boleh menggunakan react. Cara menggunakannya: 1. Laksanakan pemapar berdasarkan "react-reconciler" dan jana DSL 2. Buat komponen program mini untuk menghuraikan dan membuat DSL 3. Pasang npm dan laksanakan Build; npm dalam alat; 4. Perkenalkan pakej ke halaman anda sendiri, dan kemudian gunakan API untuk menyelesaikan pembangunan.

Laksanakan kesan flip kad dalam program mini WeChat Laksanakan kesan flip kad dalam program mini WeChat Nov 21, 2023 am 10:55 AM

Melaksanakan kesan flipping kad dalam program mini WeChat Dalam program mini WeChat, melaksanakan kesan flipping kad ialah kesan animasi biasa yang boleh meningkatkan pengalaman pengguna dan daya tarikan interaksi antara muka. Yang berikut akan memperkenalkan secara terperinci cara melaksanakan kesan khas flipping kad dalam applet WeChat dan memberikan contoh kod yang berkaitan. Pertama, anda perlu menentukan dua elemen kad dalam fail susun atur halaman program mini, satu untuk memaparkan kandungan hadapan dan satu untuk memaparkan kandungan belakang Kod sampel khusus adalah seperti berikut: &lt;!--index.wxml-. -&gt;&l

Alipay melancarkan program mini 'Chinese Character Picking-Rare Characters' untuk mengumpul dan menambah pustaka aksara yang jarang ditemui Alipay melancarkan program mini 'Chinese Character Picking-Rare Characters' untuk mengumpul dan menambah pustaka aksara yang jarang ditemui Oct 31, 2023 pm 09:25 PM

Menurut berita dari laman web ini pada 31 Oktober, pada 27 Mei tahun ini, Ant Group mengumumkan pelancaran "Projek Pemilihan Watak Cina", dan baru-baru ini membawa kemajuan baharu: Alipay melancarkan program mini "Pemilihan Watak Cina-Watak Biasa" untuk mengumpul koleksi daripada masyarakat Watak nadir menambah pustaka aksara jarang dan memberikan pengalaman input yang berbeza untuk aksara jarang untuk membantu memperbaik kaedah input aksara jarang dalam Alipay. Pada masa ini, pengguna boleh memasukkan applet "Watak Tidak Biasa" dengan mencari kata kunci seperti "Pengambilan aksara Cina" dan "aksara jarang". Dalam program mini, pengguna boleh menghantar gambar aksara jarang yang belum dikenali dan dimasukkan oleh sistem Selepas pengesahan, jurutera Alipay akan membuat entri tambahan ke dalam perpustakaan fon. Laman web ini mendapati bahawa pengguna juga boleh mengalami kaedah input pemisahan perkataan terkini dalam program mini Kaedah input ini direka untuk perkataan yang jarang dengan sebutan yang tidak jelas. Pembongkaran pengguna

Cara uniapp mencapai penukaran pantas antara program mini dan H5 Cara uniapp mencapai penukaran pantas antara program mini dan H5 Oct 20, 2023 pm 02:12 PM

Bagaimana uniapp boleh mencapai penukaran pantas antara program mini dan H5 memerlukan contoh kod khusus Dalam beberapa tahun kebelakangan ini, dengan perkembangan Internet mudah alih dan populariti telefon pintar, program mini dan H5 telah menjadi bentuk aplikasi yang sangat diperlukan. Sebagai rangka kerja pembangunan merentas platform, uniapp boleh dengan cepat merealisasikan penukaran antara program kecil dan H5 berdasarkan set kod, meningkatkan kecekapan pembangunan. Artikel ini akan memperkenalkan cara uniapp boleh mencapai penukaran pantas antara program mini dan H5, dan memberikan contoh kod khusus. 1. Pengenalan kepada uniapp unia

Tutorial menulis program sembang mudah dalam Python Tutorial menulis program sembang mudah dalam Python May 08, 2023 pm 06:37 PM

Idea pelaksanaan x01 Penubuhan pelayan Pertama, pada bahagian pelayan, soket digunakan untuk menerima mesej Setiap kali permintaan soket diterima, utas baharu dibuka untuk menguruskan pengedaran dan penerimaan mesej Pada masa yang sama, terdapat pengendali untuk menguruskan semua Thread, dengan itu merealisasikan pemprosesan pelbagai fungsi ruang sembang Penubuhan pelanggan x02 adalah lebih mudah daripada pelayan Fungsi pelanggan hanya untuk menghantar dan menerima mesej, dan untuk memasukkan aksara tertentu mengikut peraturan tertentu. Ini membolehkan penggunaan fungsi yang berbeza, di sisi pelanggan, anda hanya perlu menggunakan dua utas, satu didedikasikan untuk menerima mesej, dan yang lain didedikasikan untuk menghantar mesej adalah kerana, hanya

Bagaimana untuk mengendalikan pendaftaran program mini Bagaimana untuk mengendalikan pendaftaran program mini Sep 13, 2023 pm 04:36 PM

Langkah-langkah operasi pendaftaran program mini: 1. Sediakan salinan kad pengenalan peribadi, lesen perniagaan korporat, kad pengenalan orang sah dan bahan pemfailan lain 2. Log masuk ke latar belakang pengurusan program mini 3. Masukkan halaman tetapan program mini; Pilih " "Basic Settings"; 5. Isikan maklumat pemfailan; 6. Muat naik bahan pemfailan; 7. Hantar permohonan pemfailan; 8. Tunggu keputusan semakan. Jika pemfailan tidak lulus, buat pengubahsuaian berdasarkan alasan dan serahkan semula permohonan pemfailan; 9. Operasi susulan bagi pemfailan ialah Can.

See all articles