javascript如何实现异步请求?

摘要:JS中通常实现浏览器和服务器的数据交互,那么异步操作是关键的一部分:通常情况下,浏览器想服务器发送请求,服务器相应请求返回数据,浏览器执行异步操作。

JS中通常实现浏览器和服务器的数据交互,那么异步操作是关键的一部分:通常情况下,浏览器想服务器发送请求,服务器相应请求返回数据,浏览器执行异步操作。

使用定时函数模拟异步请求数据:

// 使用定时函数模拟异步请求:
// 方法一:使用回调函数
function doSomething(callback){
  setTimeout(function(){
    console.log('执行结束');
    let result = 4;
    callback(result);
  },100);
}
 
function callback(result){
  console.log('接收到结果为:'+result);
}
 
doSomething(callback);
doSomething((result)=>{console.log('接收到结果为:'+result)});
 
 
// 方法二:promise对象
function doSomething(){
  return new Promise(function(resolve){
    setTimeout(function(){
      console.log('执行结束');
      let result = 6;
      resolve(result);
    },100);
  });
 
}
 
doSomething().then(result=>{
  console.log('接收到结果为:'+result);
});
 
 
// 方法三:generator函数
function doSomething(){
  setTimeout(function(){
    let result = 6;
    it.next(result);
  },100);
}
 
function *gener(){
  var result = yield doSomething();
  console.log(result);
}
 
let it = gener();
it.next();
 
// 方法四:async(ES7)
function doSomething(){
  return new Promise(resolve=>{
    setTimeout(function(){
      let result = 6;
      resolve(result);
    },100);
  });
 
}
 
async function action(){
  let result = await doSomething();
  console.log(result);
}
action();


Promise的含义:
promise是异步编程的一种解决方法。

所谓promise,简单说是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果,从语法上说,promise是一个对象,从它可以获取异步操作的消息,promise提供了统一的API,各种异步操作都可以用同样的方法进行处理。


Generator函数:

Generator函数是es6提供的一种异步编程的解决方案,语法行为与传统函数完全不一样。

Generator函数有多种理解角度,从语法上,首先可以把它理解成,Generator函数是一个状态机,封装了多个内部状态。

执行Generator函数会返回一个遍历器对象,也就是说,Generator函数除了是状态机还是一个遍历器对象生成函数。 返回遍历器对象,可以依次遍历Generator函数内部的每一个状态。


async:

async是HTML5的新属性,该属性规定一旦脚本可用,则会异步执行(一旦下载完毕就会立刻执行)。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_7987