话不多说,直接上代码,一个个的写传参详情。
我里面写的这个延时器模拟的异步任务,没有多难,不用仔细看。只需要看什么时候调用reslove还是reject函数即可,调用其中的一个,那么就会执行外面的.then或者是catch回调函数!
温馨提示:还是请各位看官,如果不懂什么叫回调函数,建议把这个扎实的补补,回调函数在后面越来越重要!
<script>
function clients(count) {
// 第一步:生成一个promise实例对象
// 第二步:传入俩个回调函数resolve与reject //注意:当我们给实例传入一个函数时,这个函数立即执行函数,我们把异步任务传入这个立即执行函数里面
let promise = new Promise((resolve, reject) => {
// 用延时函数模拟一个异步任务
// 我们把这个需要进行的异步任务,通通都放到这个函数里面进行执行。
setTimeout(() => {
if (count <= 0) {
let total = 0;
for (let i = 0; i < 50; i++) {
total += 1;
}
// 满足条件时,调用这个成功的回调函数。触发外面的.then()回调函数里面的内容
resolve(total);
} else {
throw new Error("传进来的"+count+"数值已经大于了0");
//不满足条件时,调用这个reject函数,触发外面的.catch()回调函数里面的内容
reject(count);
return;
}
}, 1500);
});
// 最终:我们需要返回这个promise实例对象,为什么要返回呢,因为我们实在一个函数里面封装的promise,所有需要返回这个实例对象
return promise;
}
//调用函数,传入我们自定义的参数10,虽然函数里面异步任务开始执行。当异步任务执行到满足什么条件时,
// 比如执行:resolve();那么外面的.then就会进行执行,因为.then是reslove的回调函数。
clients(10).then((value) => {
console.log("最终成的结果是", value);
}).catch((err) => {
console.log("失败了", err);
});
</script>