国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【前端異?!縅avaScript錯(cuò)誤處理:分析 Uncaught(in promise) error

這篇具有很好參考價(jià)值的文章主要介紹了【前端異常】JavaScript錯(cuò)誤處理:分析 Uncaught(in promise) error。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在開發(fā)過程中,JavaScript的錯(cuò)誤處理是一個(gè)老生常談的話題。當(dāng)應(yīng)用程序發(fā)生未捕獲的異常時(shí),Uncaught(in promise) error是其中最常見的錯(cuò)誤類型。這篇文章將從多個(gè)方面詳細(xì)闡述這種錯(cuò)誤類型的原因與解決方案。

一、Promise是什么

Promise是一種用于異步編程的原生JavaScript對(duì)象。它提供了一種處理異步操作結(jié)果的方式,Promise表示一個(gè)異步任務(wù)的延遲狀態(tài)。

new Promise((resolve, reject) => {
  // 異步操作
  if (success) {
    resolve(result);
  } else {
    reject(error);
  }
}).then((result) => {
  // 處理異步操作結(jié)果(成功后的)
}).catch((error) => {
  // 處理異步操作錯(cuò)誤(有異常的)
});

Promise構(gòu)造函數(shù)接收一個(gè)執(zhí)行函數(shù)作為參數(shù),并在異步操作完成后調(diào)用resolve或reject方法。

然后,我們可以使用then和catch方法處理相應(yīng)的結(jié)果或錯(cuò)誤。如果Promise的狀態(tài)變?yōu)閞esolved,then方法被調(diào)用。否則,如果狀態(tài)變?yōu)閞ejected,catch方法被調(diào)用。

下面是我項(xiàng)目中 index.js 中使用的方式:

export function addAlarmRule(data) {
	return request({
		url: '/device/rule',
		method: 'post',
		data: data
	});
}

index.vue 代碼中使用的方式如下:

/** 提交按鈕 */
submitForm: function() {
	this.$refs['form'].validate(valid => {
		if(valid) {
			if(this.form.ruleId !== undefined) {
				updateAlarmRule(this.form).then(response => {
					this.$modal.msgSuccess('修改成功');
					this.open = false;
					this.reload();
				});
			}else {
				addAlarmRule(this.form).then(response => {
					this.$modal.msgSuccess('新增成功');
					this.open = false;
					this.reload();
				});
			}
		}
	});
}

注意:上述代碼中,沒有使用catch方法處理異常。

二、什么是 Uncaught(in promise) error

Uncaught(in promise) error 表示一個(gè)Promise被rejected且未處理。

const promise = new Promise((resolve, reject) => {
  reject('error');
});

在上面示例中,創(chuàng)建了一個(gè)Promise并使用reject方法將其狀態(tài)設(shè)置為rejected。但是,沒有在后續(xù)代碼中處理這個(gè)錯(cuò)誤,此時(shí)就會(huì)導(dǎo)致 Uncaught(in promise) error。

【前端異?!縅avaScript錯(cuò)誤處理:分析 Uncaught(in promise) error,異常解決方案,前端相關(guān),前端,javascript,開發(fā)語言

三、解決方案

3.1 使用catch方法處理Promise的錯(cuò)誤

在Promise中,catch方法被用來處理錯(cuò)誤。如果Promise變成了rejected狀態(tài),那么catch方法會(huì)被調(diào)用。

const promise = new Promise((resolve, reject) => {
  reject('error');
}).catch((error) => {
  console.log(error);
});

在上面示例中,代碼添加了catch方法來捕獲Promise的錯(cuò)誤。如果Promise的狀態(tài)變成rejected,那么catch方法會(huì)被調(diào)用,我們就可以在里面處理這個(gè)錯(cuò)誤。

我項(xiàng)目中的解決方式如下:

index.js代碼

export async function addAlarmRule(data) {
	const res = await request({
		url: '/device/rule',
		method: 'post',
		data: data
	});
	if(res.code === 200) {
		return res.data;
	}
	return Promise.reject(new Error(res.message));
}

index.vue代碼

/** 提交按鈕 */
submitForm: function() {
	this.$refs['form'].validate(valid => {
		if(valid) {
			if(this.form.ruleId !== undefined) {
				updateAlarmRule(this.form).then(response => {
					this.$modal.msgSuccess('修改成功');
					this.open = false;
					this.reload();
				}).catch((e) => {
					this.$message.error(e.message);
				});
			}else {
				addAlarmRule(this.form).then(response => {
					this.$modal.msgSuccess('新增成功');
					this.open = false;
					this.reload();
				}).catch((e) => {
					this.$message.error(e.message);
				});
			}
		}
	});
}

3.2 使用 async/await 處理Promise的錯(cuò)誤

如果代碼上不方便使用catch方法或者不能使用catch方法處理Promise的錯(cuò)誤,我們可以使用async/await語法糖來捕獲Promise的錯(cuò)誤。

async function asyncFunction() {
  try {
    const promise = new Promise((resolve, reject) => {
      reject('error');
    });
    const result = await promise;
  } catch (error) {
    console.log(error);
  }
}

在上述示例中,將Promise的代碼放在一個(gè)async函數(shù)中,并使用await關(guān)鍵字等待Promise對(duì)象。如果Promise變成了rejected狀態(tài),try/catch將會(huì)捕獲這個(gè)錯(cuò)誤并進(jìn)行處理。

3.3 全局異常處理

使用window.addEventListener(‘unhandledrejection’, callback)處理所有未處理錯(cuò)誤
如果應(yīng)用程序中有很多Promise,我們可以使用window.addEventListener(‘unhandledrejection’, callback)來處理所有未處理錯(cuò)誤。

window.addEventListener('unhandledrejection', (event) => {
  console.log(event.reason);
});

四、結(jié)論

當(dāng)我們使用Promise進(jìn)行異步編程時(shí),Uncaught(in promise) error 是一個(gè)常見的錯(cuò)誤類型。這種錯(cuò)誤類型通常是由于沒有處理Promise的錯(cuò)誤而導(dǎo)致的。在多數(shù)情況下,我們可以使用catch方法或者async/await語法糖來解決這種錯(cuò)誤類型。如果應(yīng)用程序中有很多Promise,我們可以使用window.addEventListener(‘unhandledrejection’, callback)來處理所有未處理的錯(cuò)誤。根據(jù)代碼情況可以使用不同的處理方法。

本文完結(jié)!文章來源地址http://www.zghlxwxcb.cn/news/detail-751442.html

到了這里,關(guān)于【前端異?!縅avaScript錯(cuò)誤處理:分析 Uncaught(in promise) error的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端向后端發(fā)起請(qǐng)求時(shí),報(bào)Uncaught (in promise) ReferenceError: ***** is not defined的錯(cuò)

    前端向后端發(fā)起請(qǐng)求時(shí),報(bào)Uncaught (in promise) ReferenceError: ***** is not defined的錯(cuò)

    ?前端調(diào)用后端的接口,顯示的Uncaught (in promise) ReferenceError: getGoods is not defined。但是我們?cè)诤蠖酥信渲昧嗽摻涌诘恼?qǐng)求地址的。同時(shí)在前端的axios中也進(jìn)行了相關(guān)接口的封裝的。 報(bào)錯(cuò)的截圖: ? 原因是沒有在頁面中引入getGoods這個(gè)封裝好的接口。 解決方法:只需在需要使用的

    2024年02月08日
    瀏覽(24)
  • Uncaught (in promise)和Uncaught (in promise) TypeError: Cannot read properties of undefined (readin

    Uncaught (in promise)和Uncaught (in promise) TypeError: Cannot read properties of undefined (readin

    只要在后面加上.catch((e) = {}),就不會(huì)報(bào)錯(cuò)了, ? ?這個(gè)問題的解決要想resolve(),在commit()不然就會(huì)報(bào)錯(cuò),注意:先后的順序

    2024年02月09日
    瀏覽(45)
  • Uncaught (in promise)解決方法

    \\\"Uncaught (in promise)\\\" 是 JavaScript 的一種錯(cuò)誤,通常是在執(zhí)行 Promise 時(shí)發(fā)生的。解決方法可能有以下幾種: 在 catch 塊中處理錯(cuò)誤。例如:

    2024年02月16日
    瀏覽(26)
  • Uncaught (in promise) error問題排查

    Uncaught (in promise) error問題排查

    報(bào)錯(cuò)信息:Uncaught (in promise) error 其實(shí)前端已經(jīng)拿到后端返回的數(shù)據(jù)了。 vue代碼: JavaScript代碼: 后臺(tái)Java代碼: ConutValue對(duì)象很簡單,就是從數(shù)據(jù)庫中統(tǒng)計(jì)出4個(gè)數(shù)字。 問題剖析: 從字面意思上看,是“未被發(fā)現(xiàn)的錯(cuò)誤”,我之前一直覺得既然前端已經(jīng)拿到后端返回的數(shù)據(jù)了

    2024年02月12日
    瀏覽(26)
  • 【Bug排查】Uncaught (in promise) Error: Infinite redirect in navigation guard

    記一次Bug排查 今日在做尚硅谷的商品甄選項(xiàng)目時(shí),遇到無法登錄的問題:報(bào)錯(cuò) Uncaught (in promise) Error: Infinite redirect in navigation guard 一開始我去搜CSDN,都說是路由的問題,我對(duì)前端也不了解,試著改了一下,發(fā)現(xiàn)沒有用。我懷疑是前端包的問題,于是我重新下載解壓了若干次資

    2024年02月07日
    瀏覽(19)
  • 解決 Uncaught (in promise) TypeError: list is not iterable 報(bào)錯(cuò)

    解決 Uncaught (in promise) TypeError: list is not iterable 報(bào)錯(cuò)

    最近在項(xiàng)目中遇到 Uncaught (in promise) TypeError: list is not iterable 報(bào)錯(cuò),雖然不影響代碼運(yùn)行,但是看著報(bào)錯(cuò)感覺有點(diǎn)難受,試試能不能解決它 看了很多篇文章,都是說使用 Object.keys() 可以解決問題 就先使用 Object.keys() 看看,代碼運(yùn)行之后 因?yàn)?Object.keys() 傳入的是 null 和 undefin

    2024年02月11日
    瀏覽(21)
  • JavaScript 常見錯(cuò)誤與異常處理

    1、調(diào)試和故障排除: 了解常見的JavaScript錯(cuò)誤可以幫助你更好地調(diào)試和故障排除代碼。當(dāng)你遇到錯(cuò)誤時(shí),能夠快速識(shí)別錯(cuò)誤類型并找到解決方法,可以節(jié)省大量的時(shí)間和精力。 2、代碼質(zhì)量和穩(wěn)定性: 通過了解常見的JavaScript錯(cuò)誤,你可以編寫更健壯和穩(wěn)定的代碼。你可以預(yù)先

    2024年02月03日
    瀏覽(21)
  • 解決:Uncaught (in promise) Error: Request failed with status code 400

    解決:Uncaught (in promise) Error: Request failed with status code 400

    問題: 在寫項(xiàng)目的時(shí)候,獲取三級(jí)聯(lián)動(dòng)的數(shù)據(jù),一直報(bào)以下錯(cuò)誤 定位問題: 這個(gè)錯(cuò)誤信息可能與在前端調(diào)用接口時(shí)存在問題有關(guān)。 400 (Bad Request) 錯(cuò)誤可能是由于請(qǐng)求參數(shù)不正確或者缺少必要參數(shù)導(dǎo)致的。 具體指向: 這個(gè)錯(cuò)誤信息中指定了一個(gè)URL,即 http://localhost:9528/dev-

    2024年02月08日
    瀏覽(23)
  • Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location報(bào)錯(cuò)

    Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location報(bào)錯(cuò)

    解決 Vue 路由傳遞參數(shù)時(shí),出現(xiàn) Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation 問題?. 報(bào)錯(cuò)內(nèi)容:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: \\\"/search/111\\\". 問題描述:重復(fù)點(diǎn)擊導(dǎo)航時(shí),控制臺(tái)報(bào)錯(cuò) 瀏覽器報(bào)錯(cuò)截圖: ?解決方法:src/router/ind

    2024年02月12日
    瀏覽(30)
  • Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘brands)

    Uncaught (in promise) TypeError: Cannot read properties of null (reading ‘brands)

    在寫vue項(xiàng)目時(shí)我們經(jīng)常會(huì)遇見這種報(bào)錯(cuò), 報(bào)錯(cuò): Uncaught (in promise) TypeError: Cannot read properties of null (reading \\\'brands\\\') 這句話意思是:無法讀取null屬性(讀取\\\'brands\\\') ?解決辦法是在需要渲染的地方加一個(gè)v-if來判斷數(shù)據(jù)存在 如下圖 搞定!!?

    2024年02月11日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包