调用墨迹文件选取器回调太早.如何检测文件何时可用



使用filepicker.io上载文件时,会在文件实际可用之前调用filepicker.spick成功回调。这是代码:

        filepicker.pick({
            mimetypes: ['image/*'],
            container: 'modal',
            services:['COMPUTER', 'FACEBOOK', 'INSTAGRAM', 'WEBCAM']
        },
        function(inkBlob){
            $('img.foo').attr('src', inkBlob.url);
        },
        function(FPError){
            console.log(FPError.toString());
        });

我在回调中的inkBlob中得到一个url,但有时如果我将该url插入dom(如上所述),我会得到404。其他时候它是有效的。我正在寻找一种可靠的方法来了解何时可以使用filepicker返回的文件。我以为是成功回调,但似乎有这种比赛条件。

我意识到我可以将成功回调封装在setTimeout中,但这似乎很混乱,如果文件真的可用,我不想让用户等待。

您还可以使用事件侦听器。

我有一个ajax调用,它在图像被Ink裁剪后下载图像。此呼叫偶尔会失败。我大致通过以下操作修复了它:

filepicker.convert(myBlob, 
    { 
        crop: cropDimensions
    },
    function(croppedBlob) {
        function downloadImage() { 
            ...
        }
        var imageObj = new Image();
        imageObj.onLoad(downloadImage()); //only download when image is there
        imageObj.src = croppedBlob.url;
    }
);

我和你有同样的问题。我的解决方法是将onError事件附加到映像,并在404上重试(可以设置重试次数限制以避免无限循环),但这非常丑陋和混乱,所以如果有人能想出更好的解决方案,那就太好了。

最新更新