Прежде чем продолжить, дождитесь завершения функции с задачей - PullRequest
0 голосов
/ 07 февраля 2019

Как дождаться выполнения функции с заданием внутри, прежде чем продолжить?

public void A()
{
    Debug.Log("before")
    CopyInfoFromDB();
    Debug.Log("after") 
}

public void CopyInfoFromDB()
{
    FirebaseDatabase.DefaultInstance.GetReference(path)
             .GetValueAsync().ContinueWith(task =>
             {
                 if (task.IsFaulted)
                 {
                     Debug.Log("failed");

                 }
            name = ...// loading local varibles from Task.result
            });
}

Я хочу дождаться завершения CopyInfoFromDB, прежде чем печатать "после".Как мне написать функцию А по-другому?

1 Ответ

0 голосов
/ 07 февраля 2019

Если вы собираетесь использовать async-await - будьте готовы сделать все методы, участвующие в конвейере, также асинхронными

public async Task A()
{
    Debug.Log("before")
    await CopyInfoFromDB();
    Debug.Log("after") 
}

public Task CopyInfoFromDB()
{
      return FirebaseDatabase.DefaultInstance
                             .GetReference(path)
                             .GetValueAsync();
}

В случае сбоя GetValueAsync на строку будет выдано исключениегде вы ждете этого.

...