46サードパーティasync/await

2001 ワード


はつでんき


:関数の実行を停止できます.nextメソッド呼び出し時にsuidを実行することで関数呼び出し者と関数状態を交換できます.
function* 함수명(){
  yield 
}

함수명.next() 
非同期処理は同期処理の利点があるため、reduce社でよく用いられる.

async/await


可読性があり、非同期処理のように簡単に実現できる.非同期処理の結果は、後続の処理を必要とせずにプロセスを使用できます.(常にasyncはデフォルトの解析のプロセスを返します)
asyncはインスタンスを返さなければなりませんが、asyncはプロセスを返さなければなりません.
async実行時に非同期で実行し、waitがロックされている場合に解析の処理結果を返す
asyncを使用するときに使用されるキーワードは、パラレルであるか相互に影響しているかによって異なります.
パラレル実行時にPromiseを使用します.allを使用して同時に起動するのが速く、
async function a(){
   const res = await Promise.all([
     new Promise (resolve => setTimeOut(()=> resolve(1), 3000)),
     new Promise (resolve => setTimeOut(()=> resolve(1), 4000)),
     new Promise (resolve => setTimeOut(()=> resolve(1), 1000))
     ]);
    console.log(res);
   }
  a();
各方面の影響を受けて、それぞれ待機し、順序を保証しなければならない.
async function b(n){
 const t1 = await new Promise (resolve => setTimeOut(()=> resolve(1), 3000));
 const t2 = await new Promise (resolve => setTimeOut(()=> resolve(t1+1), 4000));
 const t3 = await new Promise (resolve => setTimeOut(()=> resolve(t2+2), 1000));
  ]);
    console.log([t1, t2, t3]);
   }
  b(1);

エラー処理


async/awaitはtry catch、try catch、
const fetch = require('node-fetch');
const a = async ()=>{
  try{
    const url ='www.123.12';
    const res = await fetch(url);
    const data = await res.json();
	}catch(err){
    console.log(err);
    }
};
a();
Promiseに戻ればcatchが使えます
const fetch = require('node-fetch');
const a = async ()=>{
  try{
    const url ='www.123.12';
    const res = await fetch(url);
    const data = await res.json();
};
a().then(console.log(data)).catch(console.error);