上面介绍了Action,可以知道它的action方法必须是同步执行,立马有返回结果的。为了满足异步的场景,于是就有了AsyAction

下面列出了AsyAction的详细信息:

public abstract class AsyAction<REQ extends InteractiveBaseRequest,RESP extends InteractiveBaseResponse> extends ActionAdapter<REQ,RESP> {


    public abstract void asyAction(REQ request, Context context, Event event, AsyActionCallBack<RESP> callBack);


    @Override
    public final RESP action(REQ request) {
       throw new UnsupportedOperationException("Internal Action Unsupported invoke [action] method.");
    }
}

可以看到AsyAction类是在ActionAdapter基础上扩展出来的,并且屏蔽了action同步方法,而是扩展出了一个asyAction方法。可以看到asyAction方法除了request入参之外多了一个和原生的interactive方法一样的两个参数contextevent,还多了一个callback方法。

下面给出了一个AsyAction实现样例:

public class FirstInteraction extends AsyAction<FirstRequest, FirstResponse> {

    @Override
    public void asyAction(final FirstRequest request, Context context, Event event, final AsyActionCallBack<FirstResponse> callBack) {
        FirstResponse response = new FirstResponse();
        response.setHello(request.getName());
        callBack.callBack(response);
    }
}

现在返回结果必须通过callback的回调方式。