第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在Typescript中依次執(zhí)行2個(gè)函數(shù)?

如何在Typescript中依次執(zhí)行2個(gè)函數(shù)?

慕虎7371278 2024-01-18 09:46:36
我正在調(diào)用以下兩個(gè)函數(shù):getStudentDataFunction(){........return studentData}getTeachersDataFunction(){........return teachersData}我希望 getTeachersDataFunction() 在 getStudentDataFunction() 完成返回?cái)?shù)據(jù)后執(zhí)行。有沒有辦法做到這一點(diǎn)?
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

同步和異步執(zhí)行

如果函數(shù)是同步的,則可以按順序調(diào)用它們,因?yàn)樗鼈兪且粋€(gè)接一個(gè)執(zhí)行的:

getStudentDataFunction()
getTeachersDataFunction()

然而,這些函數(shù)大概是異步的,否則你就不會(huì)問這個(gè)問題。這意味著該函數(shù)中的一條語句必須啟動(dòng)獲取數(shù)據(jù)的過程,但它是通過另一程序路徑獲取的。

異步請(qǐng)求示例

一個(gè)例子是XMLHttpRequest,發(fā)出瀏覽器內(nèi) HTTP 請(qǐng)求的標(biāo)準(zhǔn)方法(該示例來自Mozilla 文檔):

var?oReq?=?new?XMLHttpRequest();
oReq.addEventListener("load",?reqListener);
oReq.open("GET",?"http://www.example.org/example.txt");
oReq.send();

這里oReq.send();發(fā)出HTTP請(qǐng)求,開始請(qǐng)求數(shù)據(jù)的過程。但實(shí)際獲取數(shù)據(jù)的方式是通過使用reqListener第二行中的回調(diào)函數(shù)。當(dāng)數(shù)據(jù)準(zhǔn)備好時(shí),將使用this上下文對(duì)象單獨(dú)調(diào)用該函數(shù),該上下文對(duì)象允許獲取 HTTP 響應(yīng)。因此,任何因 HTTP 請(qǐng)求返回而執(zhí)行的代碼都必須從 調(diào)用reqListener。

適用于您的場(chǎng)景

為了讓您的函數(shù)按順序運(yùn)行,您需要識(shí)別回調(diào)函數(shù)或getStudentDataFunction()用于獲取其數(shù)據(jù)的其他機(jī)制,然后使用 JavaScript 處理異步代碼的方法之一以您想要的方式對(duì)函數(shù)進(jìn)行排序。三種主要方式是回調(diào)、Promises和異步函數(shù)(從最古老到最現(xiàn)代)。getStudentDataFunction()本身應(yīng)該使用這三種方法之一。

這些將按如下方式工作:

// 1. If getStudentDataFunction() accepts a callback


var studentCallback = function(studentData) {

? ?getTeachersDataFunction()

}

getStudentDataFunction(studentCallback)


// 2. If getStudentDataFunction() returns a Promise:


getStudentDataFunction()

? ?.then(getTeachersDataFunction) // second function is only called when Promise resolves


// 3. If getStudentDataFunction() returns a Promise and you wish to use async functions:


async function getAllData() {

? ?await getStudentDataFunction() // await keyword makes execution wait for Promise to resolve

? ?getTeachersDataFunction()

}


getAllData()


查看完整回答
反對(duì) 回復(fù) 2024-01-18
?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可能需要使用 Rxjs 使這兩個(gè)方法可觀察,因此您可以執(zhí)行以下操作:


? caller() {

? ? this.method1()

? ? ? .pipe(switchMap(res1 => this.method2(res1)))

? ? ? .subscribe(res2 => {

? ? ? ? console.log(res2);

? ? ? });

? }

查看完整回答
反對(duì) 回復(fù) 2024-01-18
  • 2 回答
  • 0 關(guān)注
  • 196 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)