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

vue js 回調(diào)函數(shù) 異步處理 為什么要 let that = this

這篇具有很好參考價值的文章主要介紹了vue js 回調(diào)函數(shù) 異步處理 為什么要 let that = this。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1?異步就是開個事務(wù)(只有主線程 等主線程空閑),用that 值 做處理,然后返回處理結(jié)果,而that的值是開啟事務(wù)那一刻的this的值.而在主線程處理的時候,this的一直在變化, that的值保留在那一刻

ps 或是將本obj 傳遞給其他的obj使用處理

ps 開啟新事務(wù)或開啟新子線程都是 在新的obj里處理數(shù)據(jù),所以不是同一個obj?

-> 所以你不能在不是相同的obj 用this 指定另一個obj

js this 指的是什么_tenc1239的博客-CSDN博客

在 JavaScript 中,異步代碼會在單獨的線程中運行,
并且會在未來的某個時刻返回結(jié)果。在異步函數(shù)中,
this 的值可能會發(fā)生變化,因此我們需要在異步函數(shù)外部將 this 賦值給另一個變量 that,
以便我們在異步函數(shù)中能夠訪問對象的屬性。當(dāng)異步代碼返回結(jié)果時,
我們可以使用回調(diào)函數(shù)來處理返回的結(jié)果。在回調(diào)函數(shù)中,
我們可以使用之前保存的 that 值來訪問對象的屬性。
回調(diào)函數(shù)確實可以用于異步或耗時的操作,但是它不是開啟子線程的方式。
在 JavaScript 中,主線程是唯一的線程,我們無法創(chuàng)建子線程來執(zhí)行代碼。
當(dāng)我們執(zhí)行異步操作時,會將它們添加到事件隊列中,并繼續(xù)執(zhí)行主線程中的其他任務(wù)。
當(dāng)異步操作完成時,會將回調(diào)函數(shù)添加到事件隊列中,等待主線程空閑時執(zhí)行。

所以說,回調(diào)函數(shù)的作用是允許我們在異步操作完成后執(zhí)行一些回調(diào)任務(wù),
而不需要在主線程中等待這些操作完成。這樣可以使我們的程序更加高效。
抱歉,我之前的回答可能有誤導(dǎo)性。JavaScript 中確實不支持多線程,
它是單線程的。當(dāng)我們執(zhí)行異步操作時,這些操作會被添加到事件隊列中,
等待主線程空閑時執(zhí)行。這并不是開啟了一個子線程來執(zhí)行異步操作,
而是利用了事件循環(huán)來實現(xiàn)異步編程。主線程會不斷地從事件隊列中取出任務(wù)執(zhí)行,
這樣就不會阻塞主線程,使程序更加高效。我希望這次能夠更清楚地回答你的問題。
那 that= this 的目的就是讓that等于this再創(chuàng)建異步事件時的值,
等待主線程空閑時 用這個值處理?


是的,這是一種常見的解決異步編程中 this 指向丟失的問題的方式。
在 JavaScript 中,函數(shù)的執(zhí)行環(huán)境是動態(tài)的,this 指向是根據(jù)函數(shù)的調(diào)用方式來確定的。
當(dāng)函數(shù)被作為回調(diào)函數(shù)傳遞,且回調(diào)函數(shù)是在異步事件中被調(diào)用時,this 指向有可能會丟失。
為了保持 this 指向,我們可以將 this 保存在一個變量中,
這樣在回調(diào)函數(shù)中使用這個變量即可保持正確的 this 指向。一般來說,
這個變量被命名為 that,也可以是其他的名字。在異步事件中,that 會等待主線程空閑時再被使用。

2 異步 但是沒有在異步處理函數(shù)中 不用that = this

 async handleAnalysis(params) {
    this.logList.push(`數(shù)據(jù)分析: ${minDate} - ${maxDate}`)
}

3 異步在異步處理函數(shù)中 用that = this

 request.onsuccess = function (event) {
    that.logList.push(`數(shù)據(jù)獲取成功 : ${key}`)
}

4 回調(diào)函數(shù)?用that = this ->回調(diào)函數(shù)的作用是允許我們在一個函數(shù)中處理一些異步或耗時的操作,而不需要等待它們完成

4.1?

var obj = {
  name: "obj",
  method: function() {
    // 在對象方法中,this 指向該對象
    console.log(this.name);  // 輸出 "obj"
    var innerFunction = function() {
      // 在內(nèi)部函數(shù)中,this 指向全局對象
      console.log(this.name);  // 輸出 undefined
    }
    innerFunction();
  }
}
obj.method();

4.2 箭頭函數(shù)

function doSomething(param1, param2, callback) {
  // some code here
  // 當(dāng)操作完成時,調(diào)用回調(diào)函數(shù),并將結(jié)果作為參數(shù)傳遞給回調(diào)函數(shù)
  callback(result);
}

// 調(diào)用doSomething函數(shù),傳遞一個箭頭函數(shù)作為回調(diào)函數(shù)
doSomething(1, 2, result => {
  // 回調(diào)函數(shù)的處理邏輯
});

4.3文章來源地址http://www.zghlxwxcb.cn/news/detail-668670.html

到了這里,關(guān)于vue js 回調(diào)函數(shù) 異步處理 為什么要 let that = this的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 為什么選擇 Next.js 框架?

    Next.js 框架作為一種強大而受歡迎的工具,為開發(fā)人員提供了許多優(yōu)勢和便利。本文將探討 Next.js 框架的優(yōu)點,并解釋為什么選擇 Next.js 是一個明智的決策。 文檔:https://nextjs.org/docs Next.js 框架提供了先進的服務(wù)端渲染(SSR)和靜態(tài)生成(SSG)能力,使得我們能夠在服務(wù)器上生

    2024年02月12日
    瀏覽(27)
  • js為什么是單線程?

    類比操作系統(tǒng),多線程問題有: 單一資源多線程搶占,引起死鎖問題; 線程間同步數(shù)據(jù)問題; 為了簡單: 更簡單的dom渲染。js可以操控dom,而一般來說一個網(wǎng)頁一份dom文件,多線程操作dom如果多線程修改dom便容易出現(xiàn)各種問題(例如A線程刪除一個dom,而B線程在修改此dom容

    2024年02月07日
    瀏覽(28)
  • 為什么在js中需要添加addEventListener()?

    addEventListener(監(jiān)聽器)--- EventTarget.addEventListener() 方法將指定的監(jiān)聽器注冊到 EventTarget 上,當(dāng)該對象觸發(fā)指定的事件時,指定的回調(diào)函數(shù)就會被執(zhí)行。事件目標(biāo)可以是一個文檔上的元素 Element、Document 和 Window,也可以是任何支持事件的對象(比如 XMLHttpRequest)。 addEventListener(

    2024年02月19日
    瀏覽(27)
  • inline內(nèi)聯(lián)函數(shù)為什么不能是虛函數(shù)?

    1. inline內(nèi)聯(lián)函數(shù)為什么不能是虛函數(shù)? 虛函數(shù)可以是內(nèi)聯(lián)函數(shù) ,內(nèi)聯(lián)是可以修飾虛函數(shù)的, 但是當(dāng)虛函數(shù)表現(xiàn)多態(tài)性的時候不能內(nèi)聯(lián) 。 理由如下:內(nèi)聯(lián)是在發(fā)生在編譯期間,編譯器會自主選擇內(nèi)聯(lián),而虛函數(shù)的多態(tài)性在運行期,編譯器無法知道運行期調(diào)用哪個代碼,因此

    2024年02月21日
    瀏覽(28)
  • 為什么選擇 Flink 做實時處理

    為什么選擇 Flink 做實時處理

    優(yōu)質(zhì)博文:IT-BLOG-CN 【1】流數(shù)據(jù)更真實地反映了我們的生活方式(實時聊天); 【2】傳統(tǒng)的數(shù)據(jù)架構(gòu)是基于有限數(shù)據(jù)集的(Spark 是基于微批次數(shù)據(jù)處理); 【3】我們的目標(biāo):低延遲、高吞吐(分布式架構(gòu),可能會出現(xiàn)順序上的混亂,比如統(tǒng)計1個小時內(nèi),可能在1小時的時候

    2024年03月11日
    瀏覽(22)
  • 為什么很多人禁用拷貝(復(fù)制)構(gòu)造函數(shù)

    關(guān)于C++的拷貝構(gòu)造函數(shù),很多的建議是直接禁用。為什么大家會這么建議呢?沒有拷貝構(gòu) 造函數(shù)會有什么限制呢?如何禁用拷貝構(gòu)造呢?這篇文章對這些問題做一個簡單的總結(jié)。 這里討論的問題以拷貝構(gòu)造函數(shù)為例子,但是通常賦值操作符是通過拷貝構(gòu)造函數(shù)來實現(xiàn) 的(

    2024年02月01日
    瀏覽(27)
  • Fragment為什么不用構(gòu)造函數(shù)傳遞參數(shù)?

    Fragment 的構(gòu)造方法通常不建議直接傳遞參數(shù)。我們先來看一下Fragment源碼: 在源碼中會發(fā)現(xiàn),F(xiàn)ragment的構(gòu)造函數(shù)是空的,所以他和普通類的創(chuàng)建對象的方式不太一樣。接著我們看源碼:

    2024年01月24日
    瀏覽(22)
  • 為什么使用ioutil.ReadAll 函數(shù)需要注意

    當(dāng)我們需要將數(shù)據(jù)一次性加載到內(nèi)存中, ioutil.ReadAll 函數(shù)是一個方便的選擇,但是 ioutil.ReadAll 的使用是需要注意的。 在這篇文章中,我們將首先對 ioutil.ReadAll 函數(shù)進行基本介紹,之后會介紹其存在的問題,以及引起該問題的原因,最后給出了 ioutil.ReadAll 函數(shù)的替代操作。

    2024年02月13日
    瀏覽(14)
  • 什么是棧,為什么函數(shù)式編程語言都離不開棧?

    什么是棧,為什么函數(shù)式編程語言都離不開棧?

    ? 棧是一種具有特殊訪問方式的存儲空間,它的特殊性在于, 最后進入這個空間的數(shù)據(jù),最先出去 ,可以畫圖來描述一下這種操作方式。 假設(shè)有一個盒子和三本書,依次將三本書他們放入盒子中。 入棧模擬圖 ? 現(xiàn)在有一個問題,如果一次只能取一本,我們?nèi)绾螌鴱暮凶?/p>

    2024年02月06日
    瀏覽(31)
  • 為什么JS中0.1+0.2不等于0.3

    當(dāng)我們在計算機中使用浮點數(shù)進行計算時,特別是在使用二進制表示浮點數(shù)時,可能會出現(xiàn)舍入誤差。這是由于計算機使用有限的位數(shù)來表示浮點數(shù),而某些十進制數(shù)無法精確地表示為有限的二進制數(shù)。 0.1 和 0.2 都是無限循環(huán)的二進制數(shù),在轉(zhuǎn)換為浮點數(shù)時并不能完全準(zhǔn)確地

    2024年02月07日
    瀏覽(93)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包