try/catch/async/await

7516 ワード

コードの例

const getLocation = async () => {
    //수많은 로직중에 에러가 발생하면
    //해당 에러를 포착하여 로직을 멈추고,에러를 해결하기 위한 catch 영역 로직이 실행
    try {
      //자바스크립트 함수의 실행순서를 고정하기 위해 쓰는 async,await
      await Location.requestPermissionsAsync();
      const locationData= await Location.getCurrentPositionAsync();
      console.log(locationData)

    } catch (error) {
      //혹시나 위치를 못가져올 경우를 대비해서, 안내를 준비합니다
      Alert.alert("위치를 찾을 수가 없습니다.", "앱을 껏다 켜볼까요?");
    }
  }
try/ catchはAPIでよく使われるエラー防止コードです
API呼び出しを正しく呼び出しても
サーバー側や携帯電話自体など、アプリケーション外でエラーが発生する可能性があります
これはこれらの状況を処理するコードです.
エラーが発生した場合の処理に使用される数.try{}の部分は、API要求のような動作コードを含む.catch{}部エラー発生時に実行するコードの記述
const getLocation = async () => {
    //수많은 로직중에 에러가 발생하면
    //해당 에러를 포착하여 로직을 멈추고,에러를 해결하기 위한 catch 영역 로직이 실행
    try {
      //자바스크립트 함수의 실행순서를 고정하기 위해 쓰는 async,await
      await Location.requestPermissionsAsync();
      const locationData= await Location.getCurrentPositionAsync();
      console.log(locationData)

    } catch (error) {
      //혹시나 위치를 못가져올 경우를 대비해서, 안내를 준비합니다
      Alert.alert("위치를 찾을 수가 없습니다.", "앱을 껏다 켜볼까요?");
    }
  }

try / catch


tryセクションにはAPI要求コードが含まれています.
catch部分にエラーが発生した場合、Alertの解放が見られます
catch(error)のerrorは固定されているようです
もう一度繰り返します!
tryのデフォルトはAPIを要求するコードです.
私だけかもしれない!エラーが発生した場合catchでエラーを処理

async / await



コードにはasync / awaitのキーワードが表示されます
これは、外部APIが携帯電話機器に関する情報/ファイルを呼び出してアクセスする際に使用するキーワードにすぎない.
これを書く理由は「関数の実行順序を固定するため」です.
外部ネットワークタスク(コールAPI)、携帯電話のファイルシステム、場所情報のインポートなど、タスクが非常に重い場合は、どこから着手すればいいか分からない場合があります.
これはjavascriptの特徴「비동기」のためです.
これについて詳しく知るよりも、
1)外部API操作と
2)アプリではなく携帯電話そのものの機能(位置情報を尋ねる権限など)
使用時はasync / await使用時、関数を囲む関数宣言子の前にasyncがあります.
使用する関数の前にawaitがあります.
次の例はすぐに理解できます
const func = async function(){
	await func01()
  await func02()
}
const func = async () => {
   await func01()
   await func02()
}
async function func(){
	 await func01()
	 await func02()
}
これを上の例に代入します.
const getLocation = async function(){
	await func01()
  await func02()
}
const getLocation = async () => {
   await func01()
   await func02()
}
async function getLocation(){
	 await func01()
	 await func02()
}
asyncが関数宣言部分の前にあると理解すればよい.
でもどうして下のように待てないの?
const locationData = await Location.getCurrentPositionAsync();
//위에 코드가 기존 형태인데 = 뒤에 await이 오는 게 뭔가 어색해보이지 않나?

await const locationData = Location.getCurrentPositionAsync();
//그래서 이렇게 위치를 변경해봤는데 에러가 뜨더라 
//변수 선언할 때는 = 뒤에 await을 선언하면 되는 것 같음