异步过程

import { request } from “./request.js”;

// 异步的第一个阶段 回调的代码的表现形式:嵌套 不易于阅读
const callback = () => {
let result = [];
request({
type: “POST”,
url: “/users/one”,
success(data) {
console.log(data);
request({
type: “POST”,
url: “/users/two”,
success(data) {
console.log(data);
request({
type: “POST”,
url: “/users/three”,
success(data) {
console.log(data);
request({
type: “POST”,
url: “/users/four”,
success(data) {
console.log(data);
}
});
}
});
}
});
}
});
};

// 第二阶段:Promise,通过 promise 将异步函数封装
// resolve 异步成功之后执行的函数
// reject 是当有异常的时候执行的函数
const _promise = () => {
new Promise((resolve, reject) => {
request({
type: “POST”,
url: “/users/one”,
success(data) {
resolve(data);
}
});
})
.then(data => {
console.log(data);
return new Promise((resolve, reject) => {
request({
type: “POST”,
url: “/users/two”,
success(data) {
resolve(data);
}
});
});
})
.then(data => {
console.log(data);
return new Promise((resolve, reject) => {
request({
type: “POST”,
url: “/users/three”,
success(data) {
resolve(data);
}
});
});
})
.then(data => {
console.log(data);
return new Promise((resolve, reject) => {
request({
type: “POST”,
url: “/users/four”,
success(data) {
resolve(data);
}
});
});
})
.then(console.log);
};

// 第三阶段:generator 函数, 专门用来处理异步
// 1.如何定义generator函数:在 function*
// 2.yield: next() 会把 yield 后面的值给返回出去,value
// 3.next 的参数可以传递到 gen 函数的内部
function* gen() {
console.log(“1”);
const a = yield 1;
console.log(a);
const b = yield 2;
console.log(b);
const c = yield 3;
return 4;
}

const obj = { name: “zhangsan”, age: 21, gender: “male” };
const obj1 = { a: 1, b: 2, c: 3 };

Object.prototype[Symbol.iterator] = function () {
// keys 这个被迭代对象的属性名集合
const keys = Object.keys(this);
// 当前迭代器取值索引
let index = 0;
return {
next: () => {
return {
done: index >= keys.length,
value: {
key: keys[index],
value: this[keys[index++]]
}
};
}
};
};

// const it = objSymbol.iterator;
// console.log(it.next());
// console.log(it.next());
// console.log(it.next());
// console.log(it.next());

for (let { key, value } of obj) {
console.log(key, value);
}

for (let { key, value } of obj1) {
console.log(key, value);
}

export default () => {
// iterator 迭代器, 被消费掉了
// const it = gen();
// console.log(it.next()); // { done, value }
// console.log(it.next(2));
// console.log(it.next(“hello”));
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值