比如
function a(a,b){
$.messager.confirm('xxx','xx',function(r){
if(r){
b = 1;
}else{
b = 2;
}
});
return b;
}
我需要得到經(jīng)過處理後的b,這個(gè)函數(shù)該怎麼改
回呼函數(shù)的結(jié)果只能用回呼函數(shù)傳出。
function a(a,b,callback){
$.messager.confirm('xxx','xx',function(r){
if(r){
b = 1;
}else{
b = 2;
}
callback(b)
});
}
看形式$.messager.confirm
是一個(gè)非同步調(diào)用,你可以把這個(gè)調(diào)用包一層promise
;
function a(a,b) {
return new Promise(function(resolve, reject) {
$.messager.confirm('xxx','xx',function(r){
if (r) {
b = 1;
} else{
b = 2;
}
resolve(b);
});
});
}
呼叫a
的時(shí)候可以如下這樣呼叫
a(xxx, xxx).then(function(b) {
// b就是上面resolve的值
});
回呼函數(shù)是在你主體函數(shù)執(zhí)行完後再執(zhí)行,也就是說你首先得有xxx,和xx兩個(gè)參數(shù)後,回調(diào)執(zhí)行,你這函數(shù)沒毛病啊。