Связь между модулем JS и HTML (в fullduplex)

Это также смущает меня, и я чувствую, что предыдущие ответы не учитывали ваш фактический вопрос:

Зачем использовать конструкцию return wait, когда вы можете напрямую возвращать задачу из внутреннего вызова DoAnotherThingAsync ()?

Ну, иногда вы на самом деле хотите Task<SomeType>, но в большинстве случаев вам действительно нужен экземпляр SomeType, то есть результат задачи.

Из вашего кода:

async Task<SomeResult> DoSomethingAsync()
{
    using (var foo = new Foo())
    {
        return await foo.DoAnotherThingAsync();
    }
}

Человек, незнакомый с синтаксисом (например, я), может подумать, что этот метод должен возвращать Task<SomeResult>, но поскольку он помечен как async, это означает, что его фактический тип возврата SomeResult. Если вы просто используете return foo.DoAnotherThingAsync(), вы возвращаете задачу, которая не будет компилироваться. Правильный способ - вернуть результат задачи, поэтому return await.

0
задан J. Doe 21 June 2017 в 17:14
поделиться