方法一、
var p =function(){returnnewPromise(function(resolve, reject){setTimeout(()=>{
console.log('1000')resolve()},1000)})}
var p1 =function(){returnnewPromise(function(resolve, reject){setTimeout(()=>{
console.log('2000')resolve()},2000)})}
var p2 =function(){returnnewPromise(function(resolve, reject){setTimeout(()=>{
console.log('3000')resolve()},3000)})}p().then(()=>{returnp1()}).then(()=>{returnp2()}).then(()=>{
console.log('end')})
方法二、
const promise1 =newPromise((resolve, reject)=>{setTimeout(()=>{resolve(5)},200)})
const promise2 =newPromise((resolve, reject)=>{setTimeout(()=>{resolve(1)},300)})
const promise3 =newPromise((resolve, reject)=>{setTimeout(()=>{resolve(7)},100)})
var arr=[promise1,promise2,promise3];
async
var fn=async function(arr){for(let i=0,len=arr.length;i<len;i++){
var result=await arr[i]
console.log(result)}}fn(arr)
Generator
const Cgenerator =function(arr){
const fn =function*(){for(let i =0, len = arr.length; i < len; i++){
yield arr[i]}}
const gen =fn();
const step =function(nextF){
let next=nextF()if(next.done){return;}if(next.value){
next.value.then((data)=>{
console.log(data)step(()=>{return gen.next();})})}}step(()=>{return gen.next();})}Cgenerator(arr)
Promsie.resolve()
const promiseThen=function(arr){
let res=Promise.resolve()
arr.forEach(item =>{
res=res.then(()=>{return item
}).then((data)=>{
console.log(data)})});}promiseThen(arr)