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ù)文章來源:http://www.zghlxwxcb.cn/news/detail-668670.html
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)!