它是如何工作的-gwt中的image.setUrl?

它是如何工作的-gwt中的image.setUrl?,gwt,Gwt,carImageView中的图像是动态加载的,从db接收到一个url为picture的响应,然后称为setUrlurl 下一步:我想做一些依赖于当前图像的操作方法foo。因此,我可以处理事件onLoad并将我的方法foo放在这个处理程序中。但如果新加载的图像与上一个图像相同,则不会发生此事件。为什么 问题的核心——如果我将方法foo放在调用image.setUrlurl的后面,是否可能该图像还没有加载,也没有在carImageView中呈现,但方法foo已经完成了?我怎样才能避免这些事情 为我的

carImageView中的图像是动态加载的,从db接收到一个url为picture的响应,然后称为setUrlurl

下一步:我想做一些依赖于当前图像的操作方法foo。因此,我可以处理事件onLoad并将我的方法foo放在这个处理程序中。但如果新加载的图像与上一个图像相同,则不会发生此事件。为什么

问题的核心——如果我将方法foo放在调用image.setUrlurl的后面,是否可能该图像还没有加载,也没有在carImageView中呈现,但方法foo已经完成了?我怎样才能避免这些事情

为我的英语学习

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));

    showLoadingPanel();
    try {
        builder.sendRequest(null, new RequestCallback() {
            @Override
            public void onResponseReceived(Request request, Response response) {
                final int code = response.getStatusCode();
                final String text = response.getText();
                if (code == 200) {
                    if (response.getHeader("Content-Type").contains("text/html") &&
                        text.contains("<meta name=\"login\"/>")) {
                        Window.Location.reload();
                        return;
                    }

                    String img = "data:image/jpeg;base64," + text;

                    cameraImage.setUrl(img);
                    foo();

                    hideLoadingPanel();

                } else {
                    showImageNotFoundError();
                    hideLoadingPanel();
                }
            }

            @Override
            public void onError(Request request, Throwable e) {
                eventBus.fireEvent(new ServerRequestFailureEvent(e, this.getClass()));
                hideLoadingPanel();
            }
        });
    } catch (RequestException e) {
        eventBus.fireEvent(new ServerRequestFailureEvent(e, this.getClass()));
        hideLoadingPanel();
    }

可能只需使用以下方式推迟对foo的呼叫:

cameraImage.setUrlimg; Scheduler.get.scheduleDeferrednew ScheduledCommand{ @凌驾 公开无效执行{ 傅; } };
我以前也遇到过类似的问题,项目帮我解决了

要解决您的问题:

FitImage image = new FitImage();
image.addFitImageLoadHandler(new FitImageLoadHander() {
    public void imageLoaded(FitImageLoadEvent event) {
        if (!event.isLoadFailed()) {
            foo();
        }
    }
});
image.setUrl("data:image/jpeg;base64," + text;);

现在,只有在加载映像后才会运行foo。看看这个项目,像ImagePreload这样的东西会派上用场的

我将调用cameraImage.setUrl放在showLoadingPanel之后。现在我可以处理onLoad事件,即使新图像与上一个图像相同。
这对我很有帮助,我认为这比其他人更容易做出决定,也许更好。

你能提供一些代码吗?好的,补充一个问题,你是否使用IE,你的尺寸是否大于32K?