mirror of
https://gitee.com/layui/layui.git
synced 2025-06-28 13:34:27 +08:00
parent
537748e499
commit
c32e65b944
@ -389,35 +389,36 @@ before: function(obj){ // obj 参数同 choose
|
||||
*/
|
||||
}
|
||||
|
||||
// 返回 jQuery Deferred.promise 对象或 JS 原生 Promise 对象,reject 表明阻止上传(2.9.11+)
|
||||
// 返回 jQuery Deferred 对象或 JS 原生 Promise 对象,false 或 Promise.reject 表明阻止上传(2.9.11+)
|
||||
// Promise
|
||||
/** @type {(obj: object) => boolean | JQueryDeferred<boolean> | Promise<boolean>} */
|
||||
before: function(obj){
|
||||
return new Promise(function(resolve, reject){
|
||||
setTimeout(function(){
|
||||
console.log('before_async_task', obj);
|
||||
resolve();
|
||||
resolve(true);
|
||||
}, 1000)
|
||||
})
|
||||
}
|
||||
|
||||
// Deferred
|
||||
before: function(obj){
|
||||
return $.Deferred(function(deferred){
|
||||
return $.Deferred(function(defer){
|
||||
setTimeout(function(){
|
||||
console.log('before_async_task', obj);
|
||||
deferred.resolve();
|
||||
defer.resolve(true);
|
||||
}, 1000)
|
||||
}).promise();
|
||||
}
|
||||
|
||||
// Deferred2
|
||||
before: function(obj){
|
||||
var deferred = $.Deferred();
|
||||
var defer = $.Deferred();
|
||||
setTimeout(function(){
|
||||
console.log('before_async_task', obj);
|
||||
deferred.resolve();
|
||||
defer.resolve(true);
|
||||
}, 1000)
|
||||
return deferred.promise();
|
||||
return defer.promise();
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -471,20 +471,14 @@ layui.define(['lay', 'layer'], function(exports){
|
||||
}
|
||||
// 上传前的回调 - 如果回调函数明确返回 false 或 Promise.reject,则停止上传
|
||||
if(typeof options.before === 'function'){
|
||||
var maybePromise = options.before(args);
|
||||
if(maybePromise === false){
|
||||
return;
|
||||
}else if(typeof maybePromise === 'object' && typeof maybePromise.then === 'function'){
|
||||
// 兼容 jQuery Deferred Promise 对象和原生 Promise 对象
|
||||
// 类型检测不够完善,但足以满足此场景
|
||||
maybePromise.then(function(result){
|
||||
ready();
|
||||
upload.util.promiseLikeResolve(options.before(args))
|
||||
.then(function(result){
|
||||
if(result !== false){
|
||||
ready();
|
||||
}
|
||||
}, function(error){
|
||||
layui.hint().error(error);
|
||||
error !== undefined && layui.hint().error(error);
|
||||
})
|
||||
}else{
|
||||
ready();
|
||||
}
|
||||
}else{
|
||||
ready();
|
||||
}
|
||||
@ -781,6 +775,19 @@ layui.define(['lay', 'layer'], function(exports){
|
||||
size = formatSize / Math.pow(1024, index);
|
||||
size = size % 1 === 0 ? size : parseFloat(size.toFixed(precision));//保留的小数位数
|
||||
return size + unitArr[index];
|
||||
},
|
||||
/**
|
||||
* 将给定的值转换为一个 JQueryDeferred 对象
|
||||
*/
|
||||
promiseLikeResolve:function(value){
|
||||
var deferred = $.Deferred();
|
||||
|
||||
if(value && typeof value.then === 'function'){
|
||||
value.then(deferred.resolve, deferred.reject);
|
||||
}else{
|
||||
deferred.resolve(value);
|
||||
}
|
||||
return deferred.promise();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user