Promise介绍和使用
Promise状态
Promise的优势
// 回调地狱 async(1, function (value) { async(value, function (value) { async(value, function (value) { async(value, function (value) { ... }) }) }) })// setTimeout 多余的参数会作为入参传递给第一个参数方法 let firstAsync = function (input) { return new Promise(function (resolve, reject) { setTimeout(resolve, 500, input * input) }) } let secondAsync = function (input) { return new Promise(function (resolve, reject) { setTimeout(resolve, 500, input + input) }) } let start = new Promise(function (resolve, reject) { resolve(123) }) start.then(firstAsync).then(secondAsync).then(function (res) { console.log('最终结果: ' + res) })// 注意: reject入参需要是一个Error对象,否则报错 function ajax(method, url, data) { let request = new XMLHttpRequest() return new Promise(function (resolve, reject) { request.onreadystatechange = function () { if (request.readyState === 4) { if (request.status === 200) { resolve(request.responseText) } else { reject(new Error(request.status)) } } } request.open(method, url) request.send(data) }) } let start = ajax('GET', '/api/test') start.then(function (res) { console.log(res) }).catch(function (error) { console.log(error) })
其他用法
参考
Last updated
Was this helpful?