Async/Await,简单的例子(打字稿)

Pra*_*tta 33 typescript typescript1.7

我对c#的async/await非常熟悉并且使用了一年左右的打字稿,有谁可以请一个简单的例子来解释它如何在打字稿上运行?在此先感谢,期待找到一些帮助,并实现相同的


更新
如果示例包含angular/jquery承诺将是非常有用的,因为它将给出实际实现的清晰视图

Dav*_*ret 32

关键是要使用ES6承诺或东西,实现了PromiseLikePromiseConstructorLike中发现的接口lib.d.ts(阅读更多).这个jQuery的诺言没有实现,所以它不会与工作的这些接口.

这是一个使用ES6承诺的简单示例:

function getStringFromWebServerAsync(url: string) {
    return new Promise<string>((resolve, reject) => {
        // note: could be written `$.get(url).done(resolve).fail(reject);`,
        //       but I expanded it out for clarity
        $.get(url).done((data) => {
            resolve(data);
        }).fail((err) => {
            reject(err);
        });
    });
}

async function asyncExample() { 
    try {
        const data = await getStringFromWebServerAsync("http://localhost/GetAString");
        console.log(data);
    }
    catch (err) {
        console.log(err);
    }
}

asyncExample();
Run Code Online (Sandbox Code Playgroud)

需要注意的是包含任何代码await的语句需要有一个内部async功能,所以我在一个包中的代码.也就是说,即将到来的提案增加了"顶级等待".在这里阅读更多.


Zar*_*tag 16

请注意,您需要在Typescript 1.7中定位ES6才能使用async/await.对于较低版本,Visual Studio输出

TS1308 'await' expression is only allowed within an async function.
Run Code Online (Sandbox Code Playgroud)

TS1311 Async functions are only available when targeting ECMAScript 6 and higher.
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://blogs.msdn.com/b/typescript/archive/2015/11/03/what-about-async-await.aspx

  • 这是很好的信息,但并没有真正回答这个问题.当你有足够的声誉时,也许应该是评论. (7认同)
  • 我很清楚这一点,但正如你所说,我缺乏声誉。对不起。 (2认同)