如何在Unity中等待一行代码完成后再开始下一行?

3
我需要执行这两行代码。
 reference.Child("users").Child(userId).SetRawJsonValueAsync(json);
 reference.Child("users").Child(userId).SetValueAsync(email);

它更新到Firebase数据库,并在同时添加多个条目时创建写入冲突。我知道异步自然地执行代码行,而第一个更新,但我不知道有任何类似的命令可以替换它。

Firebase文档使用字典对象和事务的示例,但我尝试使用这些方法写入数据库并没有成功,由于我很新手,花费了一周时间才找到正确的语法。有人能帮我解决问题吗?


4
你需要等待这两个异步操作都完成。 - Jonathon Chase
抱歉,我应该提到我正在使用Unity,据我所知它不支持await函数。 - JohnZ12
或者说,我无法在Unity中同时使用Firebase,因为Firebase不支持超过.Net 3.5,而await/async需要.Net 4+。实际上可能是Firestore而不是Firebase。我会调查一下并看看是否可以做到,谢谢。 - JohnZ12
1
你可以尝试使用.GetAwaiter().GetResult();,但我不确定在Unity中是否有可能导致死锁。 - Jonathon Chase
它起作用了,谢谢! - JohnZ12
2个回答

3
您可以尝试以下方法:
 await reference.Child("users").Child(userId).SetRawJsonValueAsync(json);
 await reference.Child("users").Child(userId).SetValueAsync(email);

关键点在于异步方法之前的await


抱歉,我应该提到我正在使用Unity,并且据我所知,它不支持await函数。 - JohnZ12
或者说,我无法在使用Firebase的同时在Unity中使用它,因为Firebase不支持超过.Net 3.5,但是await/async需要.Net 4+。实际上可能是Firestore而不是Firebase。我会调查一下并看看是否可以做到,谢谢。 - JohnZ12

1

正如Jonathon Chase所说,你需要做类似于这样的事情:

public async Task MyMethod()
{
    await reference.Child("users").Child(userId).SetRawJsonValueAsync(json);
    await reference.Child("users").Child(userId).SetValueAsync(email);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接