标签:异常 data 失败 http -- 并且 time ret 语法
我们先来看Promise的基本语法
setTimeout(function(){
let data = ‘hello‘
console.log(content);
},1000)
// 参数 --> 函数 (resolve,reject)
new Promise((resolve,reject) => {
setTimeout(function(){
resolve(‘hello‘)
reject(‘Error Data‘)
},1000)
}).then(data => {console.log(data);
}).catch(error => {
console.log(error)
})
// 什么情况下使用promise :
// 1. 一般情况下使用Promise 对这个异步操作进行封装
首先你会觉得多此一举
new Promise((resolve,reject) => {
setTimeout(() => {
resolve(‘hello ok‘)
reject(‘error no‘)
},1000)
}).then(data => {
console.log(data)
},err =>{
console.log(err)
})
我们在看Promise的流程图时,发现无论是then 还是catch都可以返回一个Promise对象,所以我们的代码其实是可以进行链式调用的:
这里我们直接通过Promise 包装一下新的数据,将Promise 对象返回
// 链式调用的代码
new Promise((resolve,reject) => {
setTimeout(function(){
resolve(‘qzk‘)
},1000)
}).then(data => {
console.log(data); // qzk
// 方法一:原生方法
//return new Promise((resolve,) =>{
// resolve( data+‘111‘)
//})
// 方法二:
//return Promise.resolve(data + ‘111‘)
// 方法三:省略掉 Promise.resolve()
return data + ‘1111‘
}).then(data => {
console.log(data); // qzk111
return Promise.reject(data + ‘error‘)
// 或者可以手动抛出异常,给catch捕获
// throw ‘error‘
}).then(data => {
console.log(data) // 这里不打印
return Promise.resolve(data + ‘333‘)
}).catch(error => {
console.log(error) // qzk111error
})
需求:一个渲染或其他事件依赖于两个请求(请求1,请求二)
Promise.all([
new Promise((resolve,reject) => {
// 伪代码 ajax 发送请求一
$ajax({
url:‘http://127.0.0.1:8000/ajax1/‘
success:function(data){
resolve(data)
}
})
}),
// 伪代码 ajax 发送请求二
$ajax({
url:‘http://127.0.0.1:8000/ajax2/‘
success:function(data){
resolve()
}
})
]).then(results => {
// 第一个网络请求的结果
console.log(results[0])
// 第二个网络请求的结果
console.log(results[1])
})
标签:异常 data 失败 http -- 并且 time ret 语法
原文地址:https://www.cnblogs.com/qianzhengkai/p/13401382.html