s94-node
v2.0.0
Published
常用的node工具方法封装---牧人与鱼
Downloads
14
Readme
s94-node
常用的一些工具函数
Install
$ npm install s94-node
Usage
基本用法
const $ = require('s94-node');
//传入字符串,等同require
const fs = $('fs');
//传入函数,创建回调函数队列对象,等同于new $.Read();
$(function(next){
console.log('开始');
setTimeout(()=>{next('字符串')},1000)
}).then(function(next, data){
console.log(str);
})
Ready([f]).then(f)
回调函数队列对象,主要用于大量异步操作、动画等操作
- f
Function
执行的回调函数,也可以在then方法里面传入- 回调函数接收两个参数
- @param {*} next 调用队列中的下一个函数,可以传一个参数
- @param {*} data 上一个函数return的数据(不为undefined);或者上一个函数next方法执行传入的参数(只能传一个)
- 返回:
Ready
回调函数队列对象Ready
.then(f) fFunction
添加回调函数到队列里面
//标准写法
var r = new $.Read(function(){})
//便捷写法
var r = $.Read(function(){});
var r = $(function(){});
//三种写法效果一样
//-----------用法----------
//写一个爬虫
http.request(url1, (res)=>{
res.on('end',() => {
//分析url1中的内容,获取指定地址url2
http.request(url2, (res)=>{
res.on('end',() => {
//分析url2中的内容,获取需要的地址url3
http.request(url3, (res)=>{
res.on('end',() => {
//分析url3中的内容,获取需要的地址url4
//.......
})
})
})
})
})
})
//用回调函数队列对象
$(function(next){
http.request(url1, (res)=>{
//分析url1中的内容,获取指定地址url2
next(url2);
})
}).then(function(next, url2){
http.request(url2, (res)=>{
//分析url2中的内容,获取指定地址url3
next(url3);
})
}).then(function(next, url3){
http.request(url3, (res)=>{
//分析url3中的内容,获取指定地址url4
next(url4);
})
}).then(function(next, url4){
//......
})
关于和
Promise
的区别
1、Promise
主要是构建一个更方便的异步执行的方式;Ready
主要是建立一个函数执行队列。
Promise
对不同异步执行的结果进行处理,拥有fulfilled和fulfilled两个状态,传入两个方法(resolve, reject)成功和失败分别调用;Ready
只有一个方法(next)表示执行下一个函数;所以Ready
主要用于多个操作队列的情况下
2、Promise
的then方法返回的并不是原来的Promise
对象;Ready
的then方法返回的并不是原来的Ready
对象。如下
var r = $(function(next){
next();
})
var r2 = r.then(function(next,data){})
console.log(r2===r); //true
var r = new Promise(function(ok, fail){
ok();
})
var r2 = r.then(function(data){})
console.log(r2===r); //false
//所以下面三种写法,写法2和其余两种不同
//写法1
var r = new Promise(function(ok, fail){
ok();
}).then().then();
//写法2
var r = new Promise(function(ok, fail){
ok();
});
r.then();
r.then();
//写法3
var r = new Promise(function(ok, fail){
ok();
})
r = r.then();
r = r.then();