Promise 是用来优化非同步的语法。
let factor = true //非同步事件的成功与否
let condition = function(something) {
return new Promise(function (resolve, reject) {
if(something) {
resolve("成功了");
} else {
reject('失败QQ');
}
});
}
//-----------------------可简写成以下------------------------
/*
let condition = function(something) {
if(something) {
return Promise.resolve("成功了");
} else {
return Promise.reject('失败QQ');
}
}
*/
//----------------------------------------------------------
condition(factor)
.then(function(val) {
console.log(val);
})
.catch(function(err) {
console.log(err);
});
let factor = true //非同步的事件成功与否
let factor2 = false
let condition = function(something,num) {
if(something) {
return Promise.resolve('第'+ num +"次成功了");
} else {
return Promise.reject('第'+ num +'次失败QQ');
}
}
condition(factor,1)
.then(function(val) {
console.log('1.'+val);
return condition(factor2,2)
})
.then(function(val) {
console.log('2.'+val);
return condition(factor,3)
})
.then(function(val) {
console.log('3.'+val);
return condition(factor,4)
})
.then(function(val) {
console.log('4.'+val);
})
.catch(error => console.log('错误讯息', error))
let factor = true //非同步的事件成功与否
let factor2 = false
let condition = function(something,num) {
return new Promise((resolve,reject)=>{
setTimeout(function(){
if(something) {
resolve('第'+ num +".先成功了");
} else {
reject('第'+ num +'次失败QQ');
}
},Math.floor(Math.random() * 10)*1000)
})
}
Promise.race([condition(factor2,1),condition(factor,2),condition(factor,3)])
.then((res)=>{
console.log(res)
}
).catch(err => {
console.log(err)
});
//------------------------皆为成功的前提下--------------------------
let factor = true //非同步的事件成功与否
let factor2 = false
let timer = Math.floor(Math.random() * 5)*1000
let condition = function(something,num) {
return new Promise((resolve,reject)=>{
setTimeout(function(){
if(something) {
resolve('第'+ num +".先成功了花了"+timer+'秒');
} else {
reject('第'+ num +'次失败QQ');
}
},timer)
})
}
Promise.all([condition(factor,1),condition(factor,2),condition(factor,3)])
.then((res)=>{
console.log(res)
}
).catch(err => {
console.log(err)
});
//-------------------------------其中一个失败状况下--------------------
let factor = true //非同步的事件成功与否
let factor2 = false
let timer = Math.floor(Math.random() * 5)*1000
let condition = function(something,num) {
return new Promise((resolve,reject)=>{
setTimeout(function(){
if(something) {
resolve('第'+ num +".先成功了花了"+timer+'秒');
} else {
reject('第'+ num +'次失败QQ');
}
},timer)
})
}
Promise.all([condition(factor,1),condition(factor2,2),condition(factor,3)])
.then((res)=>{
console.log(res)
}
).catch(err => {
console.log(err)
});
>>: 基於 SAML 的联合身份管理 (FIM) 以支持单点登录 (SSO)
做 lint 、 format 或是通过测试,对於程序码的品质维护有很大的帮助,因此在提交代码时,我...
在很多地方都流行可以随时查找的cheatsheet,那PySide2 有吗? 笔者不清楚,乾脆直接做...
铁人赛三十天心得 缘起 这次心血来潮想要参加铁人赛,最主要的原因其实是要归功於疫情公司WFH,每天通...
这个实用网路行销工具系列文,将会整理我平常研究的各项网路行销工具,帮助工程师如果有现成的服务可以快速...
以下内容皆参考 Backtrader 官网 昨天使用了 backtrader 将 shioaji 的...