搜尋
首頁web前端js教程一個簡單的Node.js非同步操作管理器分享_javascript技巧

最近寫nodejs比較多,剛開始的時候碰到的異步的操作比較少,因為想做的東西比較簡單,一查api有同步的,為了省事就直接用同步的搞了,慢慢發現這不是個事呀,好好的非同步特性不用,非得用同步的,真囧,並且很多東西木有同步的api的。

好!寫異步的,慢慢的出現了這種程式碼。 。 。

複製程式碼 程式碼如下:

mysql.query('xxxx').on('xxxx').on('xxxx').on('xxxx').on('xxxx').on('xxxx').on('xxxx').on('xxxx')。 success', function(){
   mysql.query('xxxx').on('success', function(){
        mysql.query('xxxx').on('uncsution). {
            mysql.query('xxxx').on('success', function(){
       🎜>                    mysql. query('xxxx').on('success', function(){
                          });
                });
          ); 🎜>    });
});

恩,你也看到了,這樣下去代碼多醜,會像老太太的裹腳布一樣了,於是就產生下面的非同步操作管理器,小巧精緻,嘿嘿,絕對夠用,代碼的事,用代碼說話吧,直接亮代碼,如碼:

TODO:不夠全面,例如說錯的就沒有處理


複製程式碼

程式碼如下:

/*
 *  非同步管理器
 *  author : jser.me
 *
 *  使用方法:
  ;
 *     asyncMg
 *     .push(function( next ){
 *           ....
 *           並為);
 *         })
 *     })
 *     .push(function( next ){
   *            ....
 *            next( );
 *         })
 *     })
 *      ', function() {
 *          allThings_is_down();
 *     }); *​​
 *
function typeOf( obj ){
    return Object.prototype.toString.call( obj ).match(/[object ([^]]*)]/)[1];
}

function AsyncManager( arg ){
    this.execArrys = [];    this.push( arg );

}
}
}

//使用系統帶的繼承方法
require('util').inherits( AsyncManager, require('events').EventEmitter );

//標記成功運行的函數數目

AsyncManager.prototype.succCount = 0;


//加入

AsyncManager.prototype.push = function( arg ) {

        var This = this;

        if( typeOf(arg) == 'Array' ){            });
        } else {

          }


        return this; //連結一個
};

//執行
AsyncManager.prototype.run = function(){
        var self = this;

        if( this.succCount == this.execArrys.length ) {

           ;
        } else {

this.execArrys[ this.succCount ]( self.run.bind( self ) );

        }

        this.succCount ;

        return this; //連結一個

};

exports = module.exports = function( arg ){
    return new AsyncManager( arg );
}


 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Vercel是什么?怎么部署Node服务?Vercel是什么?怎么部署Node服务?May 07, 2022 pm 09:34 PM

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node.js gm是什么node.js gm是什么Jul 12, 2022 pm 06:28 PM

gm是基于node.js的图片处理插件,它封装了图片处理工具GraphicsMagick(GM)和ImageMagick(IM),可使用spawn的方式调用。gm插件不是node默认安装的,需执行“npm install gm -S”进行安装才可使用。

怎么使用pkg将Node.js项目打包为可执行文件?怎么使用pkg将Node.js项目打包为可执行文件?Jul 26, 2022 pm 07:33 PM

如何用pkg打包nodejs可执行文件?下面本篇文章给大家介绍一下使用pkg将Node.js项目打包为可执行文件的方法,希望对大家有所帮助!

一文解析package.json和package-lock.json一文解析package.json和package-lock.jsonSep 01, 2022 pm 08:02 PM

本篇文章带大家详解package.json和package-lock.json文件,希望对大家有所帮助!

node爬取数据实例:聊聊怎么抓取小说章节node爬取数据实例:聊聊怎么抓取小说章节May 02, 2022 am 10:00 AM

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

分享一个Nodejs web框架:Fastify分享一个Nodejs web框架:FastifyAug 04, 2022 pm 09:23 PM

本篇文章给大家分享一个Nodejs web框架:Fastify,简单介绍一下Fastify支持的特性、Fastify支持的插件以及Fastify的使用方法,希望对大家有所帮助!

手把手带你使用Node.js和adb开发一个手机备份小工具手把手带你使用Node.js和adb开发一个手机备份小工具Apr 14, 2022 pm 09:06 PM

本篇文章给大家分享一个Node实战,介绍一下使用Node.js和adb怎么开发一个手机备份小工具,希望对大家有所帮助!

图文详解node.js如何构建web服务器图文详解node.js如何构建web服务器Aug 08, 2022 am 10:27 AM

先介绍node.js的安装,再介绍使用node.js构建一个简单的web服务器,最后通过一个简单的示例,演示网页与服务器之间的数据交互的实现。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器