ES7의 async/await 동작 확인

7023 단어 JavaScriptC#
자바스크립트(ES7)에도 async/await, await 이후 어느 처리로 옮길지 C#와 비교했다.

작업 환경


C#

  • .NET Core 1.1
  • javascript

  • Chrome 57
  • 인증 코드


    C#
    using System;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace dotnet
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("before async");
                TestAsync();
                Console.WriteLine("after async");
                Thread.Sleep(3000);
            }
    
            static async Task TestAsync() {
                Console.WriteLine("    before heavy");
                string result = await HeavyTask("2");
                Console.WriteLine("    after heavy");
                Console.WriteLine("    result: " + result);
                Console.WriteLine("    after result");
            }
    
            static async Task<string> HeavyTask(string str) {
                await Task.Delay(1000);
                return str;
            }
        }
    }
    
    javascript
    console.log('  before async');
    testAsync();
    console.log('  after async');
    
    async function testAsync() {
      console.log('    before heavy');
      let result = await heavyTask('2');
      console.log('    after heavy');
      console.log('    result: ' + result);
      console.log('    after result');
    }
    
    async function heavyTask(val) {
      return new Promise(resolve => {
        setTimeout(() => {
          resolve(val);
        }, 1000);
      });
    }
    

    결실


    C#



    javascript



    C#와javascript도 마찬가지로 await에서 이 방법에서 벗어나 호출된 원본의 다음 처리after async의 출력에 들어간다.await 후의 처리는 await의 처리가 끝난 후에 집행된다.

    총결산


    C#와 자바스크립트에서 같은 동작을 하기 위해 자바스크립트의 async/await도 C#와 같이 고려하면 됩니다.

    좋은 웹페이지 즐겨찾기