笔记:promise实例+注释

Posted dkplus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了笔记:promise实例+注释相关的知识,希望对你有一定的参考价值。

//////////////////////////////////////////////
var data = [1,2,3,4];
var promise = new Promise((resolve, reject) => {
  console.log('init');

  resolve(data); //成功的时候传入的参数data
  reject(error); //失败的时候传入的参数error
});

promise
.then((data) => {
  console.log(data); //成功
  return data; //返回data给下一个then()
})
.then((val) => { //val指上面返回的data,所以数据与命名无关
  val.map((item) => {
    console.log(item); //成功
  });
})
.then(() => {
  throw new Error('error!!!'); //抛出错误
})
.catch((error) => {
  console.log('error '+ error); //捕获错误,让程序继续运行
})
.then((data) => {
  console.log(typeof data); //undefined,因为data没有传过来
})

///////////////////////////////////////////工作流
let data = 'this is data'
function asyncFunc(data) {
  return new Promise((resolve, reject) => {
    resolve(data);
    reject(error);
  });
}

asyncFunc(data)
.then((data) => {
  console.log(data);
})
.catch((error) => {
  console.log(error);
})

////////////////////////////ajax与异步操作

function getUrl(url) {
  return new Promise((resolve, reject) => {
    let req = new XMLHttpRequest();
    req.open('GET', url, true);
    req.onload = () => {
      req.status === 200
        ? resolve(req.responseText)
        : reject(new Error(req.statusText))
    }
    req.send();
  });
}

let url = 'http://httpbin.org/get';

// 异步操作,resolve状态后不会立即执行then()
getUrl(url) // 1
.then((data) => { // 7/8
  console.log(data);
})
.catch((error) => {
  console.error(error);
})

console.log('1'); // 2
setTimeout(() => { // 5
  console.log('2');
}, 0);
setTimeout(() => { // 6
  console.log('3');
}, 0);
setTimeout(() => {  // 7/8 根据时间而定,等待时间长会先执行then()
  console.log('4');
}, 1000);
console.log('5'); // 3
console.log('6'); // 4

//////////////////////////////////////

以上是关于笔记:promise实例+注释的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

Promise学习笔记

前端面试题之手写promise

Promise笔记

Promise回调地狱学习小小小小小笔记

Python自学笔记10个爬虫入门实例,附源码,注释对新手友好