亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Typescript中依次執行2個函數?

如何在Typescript中依次執行2個函數?

慕虎7371278 2024-01-18 09:46:36
我正在調用以下兩個函數:getStudentDataFunction(){........return studentData}getTeachersDataFunction(){........return teachersData}我希望 getTeachersDataFunction() 在 getStudentDataFunction() 完成返回數據后執行。有沒有辦法做到這一點?
查看完整描述

2 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

同步和異步執行

如果函數是同步的,則可以按順序調用它們,因為它們是一個接一個執行的:

getStudentDataFunction()
getTeachersDataFunction()

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

異步請求示例

一個例子是XMLHttpRequest,發出瀏覽器內 HTTP 請求的標準方法(該示例來自Mozilla 文檔):

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

這里oReq.send();發出HTTP請求,開始請求數據的過程。但實際獲取數據的方式是通過使用reqListener第二行中的回調函數。當數據準備好時,將使用this上下文對象單獨調用該函數,該上下文對象允許獲取 HTTP 響應。因此,任何因 HTTP 請求返回而執行的代碼都必須從 調用reqListener。

適用于您的場景

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

這些將按如下方式工作:

// 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()


查看完整回答
反對 回復 2024-01-18
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

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


? caller() {

? ? this.method1()

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

? ? ? .subscribe(res2 => {

? ? ? ? console.log(res2);

? ? ? });

? }

查看完整回答
反對 回復 2024-01-18
  • 2 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號