typescript 异步/等待

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了typescript 异步/等待相关的知识,希望对你有一定的参考价值。

//Standart
function awaitDelayed() : Promise<void> {
return new Promise<void> (
( resolve: () => void,
reject: () => void ) =>
{
function afterWait() {
console.log(`wywołujemy funkcję zwrotną resolve`);
resolve();
}
setTimeout(afterWait, 1000);
}
);
}

/  słowa kluczowe async i await
//  ===========

function awaitDelayed() : Promise<void> {
  return new Promise<void> (
    ( resolve: () => void,
      reject: () => void ) => 
      {
        function afterWait() {
          console.log(`wywołujemy funkcję zwrotną resolve`);
          resolve();
        }    
        setTimeout(afterWait, 1000);
      }
  );
}

async function callAwaitDelayed() {
  console.log(`wywołujemy funkcję awaitDelayed`);
  await awaitDelayed();
  console.log(`po wywołaniu funkcji awaitDelayed`);
}

callAwaitDelayed();


//  słowo kluczowe async i obsługa błędów
//  ============

function awaitError() : Promise<string> {
  return new Promise<string> (
    ( resolve: (message: string) => void,
      reject: (error: string) => void ) => 
      {
       function afterWait() {
         console.log(`wywołujemy metodę zwrotną reject`);
         reject("wystąpił błąd");
       }    
       setTimeout(afterWait, 1000);
      }
  );
}

async function callAwaitError() {
  console.log(`wywołujemy funkcję awaitError`);
  try {
    await awaitError();
  } catch (error) {
    console.log(`zwrócono błąd : ${error}`);
  }
  console.log(`po wywołaniu funkcji awaitDelayed`);
}

callAwaitError();


function simplePromises() {
  // wywołanie funkcji asynchronicznej
  delayedPromise().then(
    () => { 
      // kod wykonywany w razie prawidłowego
      // wyznaczenia obietnicy
    }
  ).catch (
    () => {
      // kod wywoływany w razie wystąpienia błędu
    }
  );
  // kod umieszczony w tym miejscu NIE będzie
  // czekał na zakończenie wykonywania funkcji asynchronicznej
}

async function usingAsyncSyntax() {
  try {
    await delayedPromise();
    // kod wykonywany w razie pomyślnego wyznaczenia obietnicy
  } catch(error) {
    // kod wykonyway w przypadku, gdy podczas wyznaczania 
    // obietnicy wystąpiły jakieś błędy
  }
  // ten kod zostanie wykonany dopiero po zakończeniu 
  // funkcji asynchronicznej
}


function asyncWithMessage() : Promise<string> {
  return new Promise<string> (
    ( resolve: (message: string ) => void,
      reject: (message: string) => void
    ) => {
      function afterWait() {
        resolve("komunikat_wyznaczenia_obietnicy");
      }
      setTimeout(afterWait, 1000);
    }
  );
}


async function awaitMessage() {
  console.log(`wywołujemy funkcję asyncWithMessage`);
  let message: string = await asyncWithMessage();
  
  console.log(`zwrócono komunikat: ${message}`);
}

awaitMessage();

//*/

以上是关于typescript 异步/等待的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Firestore get() 异步/等待

在 MongoDB 中等待查询

如何在 JS/TS 中实现伪阻塞异步队列?

TypeScript 中的类型不存在属性

NextJS Typescript - 保护后对象可能未定义?

Typescript async/await 和 angular $q 服务