总结常用方式
1、Promise:
function first(){
return new MyPromise(function (resolve, reject) {
console.log('执行1')
setTimeout(() => {
console.log('1请求结束')
resolve('1返回参数')
}, 1000);
});
}
function second(){
return new MyPromise(function (resolve, reject) {
console.log('执行2')
setTimeout(() => {
console.log('2请求结束')
resolve('2返回参数')
}, 1000);
});
}
function third(){
return new MyPromise(function (resolve, reject) {
console.log('执行3')
setTimeout(() => {
console.log('3请求结束')
resolve('3返回参数')
}, 1000);
});
}
first().then(second).then(third).then( res => {
console.log(3返回参数)
})
2、Generator
function first(msg) {
setTimeout(() => {
console.log('第一个请求 compile', msg),
it.next('第一个请求 result');
}, 2000)
}
function second(msg) {
setTimeout(() => {
console.log('第二个请求 compile', msg),
it.next('第二个请求 result');
}, 2000)
}
function third(msg) {
setTimeout(() => {
console.log('第三个请求 compile', msg),
it.next('第三个请求 result');
}, 2000)
}
function *excute(){
var result = yield first("执行开始");
var data2 = yield second(result);
var data3 = yield third(data2);
console.log('执行结束', data3);
}
var it = main();
it.next();
console.log("执行完毕");
3、setTimeout
function first() {
setTimeout(() => {
console.log('执行1')
setp2('1传递的参数')
}, 2000);
}
function second(data) {
setTimeout(() => {
console.log('执行2', data)
setp3('2传递的参数')
}, 2000);
}
function third(data) {
setTimeout(() => {
console.log('执行3', data)
}, 2000);
}
first();