2017-04-06 74 views
1

在打字稿2.3中引入了一個新功能,等待任何人發佈一個簡單的例子,說明如何使用相同的承諾以及相同的主要用例,我一直在尋找到有變化的例子登錄等待 - 簡單的例子(打字稿)

async function f() { 
    for await (const x of g()) { 
console.log(x); 
} 
} 

,但不能太瞭解使用情況

回答

0

下面是其使用,等待-的打印「1」,等待第二個樣本然後打印「2」:

// Polyfill Symbol.asyncIterator 
(Symbol as any).asyncIterator = Symbol.asyncIterator || Symbol("Symbol.asyncIterator"); 

async function sleep(ms: number): Promise<void> { 
    return new Promise<void>((resolve, reject) => { 
    setTimeout(resolve, ms); 
    }); 
} 

async function* asyncGenerator() { 
    yield 1; 
    await sleep(1000); 
    yield 2; 
} 

(async() => { 
    for await (const num of asyncGenerator()) { 
    console.log(num); 
    } 
})().catch(e => console.error(e)); 

打字稿2.3版本說明有一些helpful caveats

  • 您需要包括esnextcompilerOptions.lib設置你的tsconfig.json(或--lib命令行標誌)。
  • 您需要在您的tsconfig.json(或--downlevelIterators的命令行中)中設置compilerOptions.downlevelIterators
  • 您可能需要一個Symbol.asyncIterator填充(包含在上面的代碼片段中)。