美文网首页前端
异步的实现

异步的实现

作者: BlueSkyBlue | 来源:发表于2020-06-07 20:03 被阅读0次

异步的三种实现方式:

回调函数
事件
Promise

回调函数

回调函数不一定是异步

var arr = [1,2,3,4,5];
arr.forEach(function(i, v){
  console.log(v);
});

但是异步一定是回调函数。

事件

事件源.on('事件名称', 回调函数)

举例:

var http = require('http');
var server = http.createServer();
server.on('request', function(req, res){
  res.write('<h1>You are accessing Node.js server.</h1>');
});

server.listen(80, function(){
  console.log('Server is on run.');
});

Promise

承诺对象。用于传递异步操作的消息。它代表了某个未来才知道结果的事件(通常是一个异步事件),并且这个事件提供了一个统一的API,可供进一步处理。

特点:
状态不受外界影响。有三种状态,Pending(进行中),Resolved(已完成,又称Fulfilled)和Rejected(已失败)。这三种状态只能从一个转到另外一个。

Pending -> Resolved
Pending -> Rejected

用于解决异步返回消息的消息传递。

由于异步的返回结果,时间,顺序不可控,所以需要使用Promise来统一控制输出结果。

var fs = require('fs');

var p1 = new Promise(function(resolve, reject){
  fs.readFile('./file.txt', function(err, data){
    if(err){
      console.log('No data.');
    }else{
      resolve(data.toString());
    }
  })
});

p1.then(function(data){
  console.log(data);
}, function(err){
  console.log(err);
});

Promise实现异步消息传递

var p1 = new Promise(function(resolve, reject){
  fs.readFile('./file1.txt', function(err, data){
    if(err){
      console.log('No data.');
    }else{
      resolve(data.toString());
    }
  })
});

var p2 = new Promise(function(resolve, reject){
  fs.readFile('./file2.txt', function(err, data){
    if(err){
      console.log('No data.');
    }else{
      resolve(data.toString());
    }
  })
});

Promise.all([p1, p2]).then(function(data)){
  console.log(data);
});

相关文章

  • 模拟异步函数

    异步函数实现机制(async.js) 实现了支持同步函数和异步函数的声明 声明异步函数 调用异步函数

  • JavaScript之异步概述

    1,异步(什么是异步,异步出现的原因,异步解决的问题,如何实现异步,什么时候需要异步模式。) JavaScript...

  • SpringBoot 发布ApplicationEventPub

    SpringBoot 异步事件实现异步(ApplicationEventPublisher、Application...

  • 显式使用线程实现异步编程

    显式使用线程实现异步编程 摘要 本章主要讨论如何显式的使用线程实现异步编程,这其中包含如何显式使用线程实现异步编程...

  • Spring中使用@Async异步调用方法

    摘要 异步调用传统SSM项目实现 异步调用SpringBoot实现 Async简介: 异步方法调用使用场景:处理日...

  • 异步的实现

    异步的三种实现方式: 回调函数事件Promise 回调函数 回调函数不一定是异步 但是异步一定是回调函数。 事件 ...

  • 对JS异步编程的探究

    在探究“异步“的时候,我们总会联想到多线程实现异步,那么为什么JavaScript非要弄成单线程,还要实现异步呢?...

  • Asp.net Mvc异步

    MainContent:Jquery异步,Asp.net Mvc异步完成:点击按钮更新时间 Jquery异步实现 ...

  • 关于异步函数的前世今生

    1、ES6、ES7、ES8中关于异步函数的处理办法 JS中常用的实现异步的方法 利用setTimout实现异步 动...

  • Spring Boot中使用@Async实现异步调用

    Spring Boot中使用@Async实现异步调用 使用@Async实现异步调用 启动加上@EnableAsyn...

网友评论

    本文标题:异步的实现

    本文链接:https://www.haomeiwen.com/subject/dnfhtktx.html