[英]How do I neaten up nested callbacks?
我使用的是FB SDK for Unity,由于异步函数需要按顺序返回,因此我发现它很麻烦,而且缺少回调。 我该如何抽象我的代码,使它更整洁,并将我的逻辑/流与异步回调分开?
我的逻辑是这样的:
这是我要执行的操作的伪示例:
Init()
{
LogInWithCallback(LoginResponse);
}
public LoginResponse(response)
{
if(response.loggedIn)
{
checkPermissions();
}
}
public checkPermissions(){
checkPermissionsWithCallback(permissionCheckCallback);
}
public permissionCheckCallback(ResponseDelegate)
{
//If the player doesn't have the right permissions, request them.
requestPermissions("score permission",permissionRequestCallback);
}
public permissionRequestCallback()
{
//if requesting the score permission was successful post score;
Postscore(); // <- It doesn't make sense to have logic which posts the player's score this deep down a callback chain, but I don't know any other way around.
}
我自己在一段时间前就遇到了这个问题!
尝试使用Promise 。 这是一种编程模式, 如今在javascript中变得非常流行 ,但它们也可用于C# 。 当然,如果Unity能够赶上现代C#,我们也可以使用await之类的东西,但这不会很快发生。
一方面,它们使代码变得更加容易和直接,但另一方面,它们通常使调试更加困难,因为在崩溃日志中,对于匿名委托,您会得到类似于m_42345之类的东西,而不是可读的方法名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.