1.回调函数(简单的函数可以使用,复杂的需求容易产生回调地狱)
function getSomething1(fn){
var num=0;
setTimeout(function(){
num=1;
fn(num);
},3000)
}
function compute1(x) {
alert(x * 2);
}
getSomething1(compute1)
2.promise
function getSomething2() {
var r = 0;
return new Promise(function(resolve) {
setTimeout(function() {
r = 2;
resolve(r);
}, 10);
});
}
function compute2(x) {
alert(x * 2);
}
getSomething2().then(compute2);
// 下面这部分是对Promise的一个解释:new Promise()是一个函数,
// 内部添加resolve(参数)可以在new Promise()出来的函数后面添加的then()获取得到参数
// var chang = new Promise(function(resolve){
// setTimeout(function(){
// var num = 3;
// resolve(num)
// },10)
// })
// chang.then(function(t){
// console.log(t)
// })
3.generator
function getSomething3() {
var r = 0;
setTimeout(function() {
r = 2;
it.next(r);
}, 10);
}
function *compute3(it) {
var x = yield getSomething3();
alert(x * 2);
}
var it = compute3();
it.next();
// 理解generator
// function* tao () {
// yield 'hello'
// yield 'kat'
// return 'beach'
// }
// var h = tao()
// console.log(h.next())
// console.log(h.next())
// console.log(h.next())
4.promise + generator
function getSomething() {
var r = 0;
return new Promise(function(resolve) {
setTimeout(function() {
r = 2;
resolve(r);
}, 10);
});
}
function *compute() {
var x = yield getSomething();
alert(x * 2);
}
var it = compute();
it.next().value.then(function(value) {
it.next(value);
});
5.async(异步比较好用)
function getSomething() {
var r = 0;
return new Promise(function(resolve) {
setTimeout(function() {
r = 2;
resolve(r);
}, 10);
});}
async function compute() {
var x = await getSomething();
alert(x * 2);
}
compute();
网友评论