function runAsync(callback){
setTimeout(function(){
console.log('111');
callback('222');
}, 2000);
}
runAsync(function(data){
console.log(data);
});
刚接触这个 请问 callback('222')这行代码是什么意思 ?
function runAsync(callback){
setTimeout(function(){
console.log('111');
callback('222');
}, 2000);
}
runAsync(function(data){
console.log(data);
});
刚接触这个 请问 callback('222')这行代码是什么意思 ?
这不是Promise
,是回调。
function runAsync(callback){
setTimeout(function(){
console.log('111');
callback('222');
}, 2000);
}
runAsync(param => console.log(param));
运行结果如下:
回调函数。
因为异步使你无法得到逐行自上而下运行代码的结果,异步任务会使当前作用域的同步任务执行完才执行异步的结果。
就像你定了一份外卖,是无法立即送达的,而你又要事先填好收货地址(否则你永远拿不到外卖,而这个callback,就是你订外卖的收货地址)。
Promise是异步中的微任务(跟你这个例子没什么关系),而你这里的setTimeout是一个异步中的宏任务。
类似模拟Promise返回数据,平时mock数据时可以用,加上定时器实际是模拟ajax请求后端数据的延时。
runAsync(function(data){
//console.log(data);
return Promise.resolve(data);
});
这个函数里面的回调函数可以返回data,此data即是你mock的数据,比如你按照接口协议返回的数据是
{
status:‘success’,
data: {
list: [],
field: {},
....
}
}
在runAsync
中返回的data可以用.then(res => {/res即data值,其他后续逻辑在此处完成/})
2000
毫秒后打印出111
并调用传进来的callback
函数,传入实参222