1.promise函数返回值:
<script>
function demo(){
return
}
function ping(number){
if(number > 120){
return number
}
if(number < 120){
return '太短了'
}
}
let num = ping(120);
console.log(num); // undefined
let num = ping(121);
console.log(num); // 121
let num = ping(119);
console.log(num); // 太短了
</script>
说明:如果return 后面不加返回值,函数的值 就是未定义
这个时候return 的作用仅仅是,不让后面的代码继续执行,继续执行的条件,是不在同一个作用域
2.promise倒计时:
Promise():
是异步函数,可以理解为等待函数,可以等待函数里面的代码,执行完,
再返回值;通过promise的.then();回调出成功的返回值.catch();失败的返回值,
Promise是一个构造函数;所以说,创建Promise需要,在前面加上new
成功回调:
<script>
// 定义Promise
let pro = new Promise((resolved,reject) => {
/*
两个形参:
resolved,成功的返回值
reject,失败的返回值
*/
setTimeout(()=>{
resolved(6)
// resolved(返回的参数) 代表的是 逻辑执行成功 相对应.then()回调
},3000)
})
pro.then((result) => {
/*
result 是在定义的promise里面,resolved的返回参数
*/
console.log(result);
})
</script>
失败回调(基本上不使用):
<script>
// 定义Promise
let pro = new Promise((resolved,reject) => {
/*
两个形参:
resolved,成功的返回值
reject,失败的返回值
*/
var index = 0;
setTimeout(()=>{
if(index == 0){
resolved(6)
// resolved(返回的参数) 代表的是 逻辑执行成功 相对应.then()回调
}else{
reject(8)
// reject(返回的参数) 代表的是 逻辑执行失败 相对应.then()回调
}
},3000)
})
pro.then((result) => {
/*
result 是在定义的promise里面,resolved的返回参数
*/
console.log(result);
}).catch((error) => {
/*
error 是在定义的promise里面,reject的返回参数
*/
console.log(result);
})
</script>
3.promise封装Ajax:
<script>
//写一个函数
function proAjax(url) {
//定义一个 promise 定义之后会立即执行
let pro = new Promise((resolved, reject) => {
//ajax四要素
//创建
let ajax = new XMLHttpRequest();
//打开
// ajax.open('get', 'index.json');
ajax.open('get', url);
//发送
ajax.send();
//监听
ajax.onreadystatechange = function (res) {
//判断最后一次握手情况
if (res.currentTarget.readyState == 4 && res.currentTarget.status == 200) {
//转换成json格式
let data = JSON.parse(res.currentTarget.responseText);
resolved(data)
}
}
})
//使用pro作为proAjax的函数返回值
return pro;
}
// proAjax('index.json') == pro
//把请求地址传到proAjax(url)函数内
proAjax('index.json');
proAjax('index.json').then((result) => {
console.log(result);
})
</script>