使用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上重试(可以设置重试次数限制以避免无限循环),但这非常丑陋和混乱,所以如果有人能想出更好的解决方案,那就太好了。