Подтвердить что ты не робот

Async/Await, простой пример (typescript)

Я хорошо знаком с async/wait С# и использовал typescript в течение года или около того, может кто-нибудь, пожалуйста, дать простой пример, объясняющий, как он работает на typescript?  Заранее спасибо, с нетерпением жду, чтобы найти помощь и реализовать те же


ОБНОВЛЕНИЕ
было бы очень полезно, если бы этот пример включал обещание angular/jquery, так как он даст четкое представление о практической реализации

4b9b3361

Ответ 1

Ключ заключается в том, чтобы использовать ES6 Promise или что-то, что реализует интерфейсы PromiseLike и PromiseConstructorLike найденные в 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();

Обратите внимание, что любой код, содержащий оператор await должен находиться внутри async функции, поэтому я заключил код в одну. Тем не менее, предстоящее предложение добавляет "ожидание на высшем уровне". Узнайте больше здесь.

Ответ 2

Обратите внимание, что для использования async/wait необходимо настроить таргетинг на ES6 в Typescript 1.7. С более низкими версиями выходы Visual Studio

TS1308 'await' expression is only allowed within an async function.

и

TS1311 Async functions are only available when targeting ECMAScript 6 and higher.

Для получения дополнительной информации см., например, http://blogs.msdn.com/b/typescript/archive/2015/11/03/what-about-async-await.aspx