目录
1.经过util.promisify的那些函数,已经不能再返回immediate类.
timer(定时器)
首先看类
1.Immediate 类
此对象在内部创建,并从 setImmediate()
返回。 它可以传给 clearImmediate()
以取消计划的操作。
2.Timeout 类
此对象在内部创建,并从 setTimeout()
和 setInterval()
返回。 它可以传给 clearTimeout()
或 clearInterval()
以取消计划的操作。
3. util.promisify()
传入一个遵循常见的错误优先的回调风格的函数(即以 (err, value) => ...
回调作为最后一个参数),并返回一个返回 promise 的版本。
const util = require('util');
const fs = require('fs');
const stat = util.promisify(fs.stat);
console.log(fs.stat,stat)
stat('./').then((value) => {
console.log(value)
});
const setImmediatePromise = util.promisify(setImmediate);
setImmediatePromise('.').then((value) => {
console.log(value)
});
那里面的点是一个路径....我不知道他到底找的是那个总之返回的是promise类型的函数,这个函数可以直接运行,还是照平常运行,只不过在其后面可以连接.之所以可以连接是因为setImmediate也是一个有返回值得是一个promise值.
Promise { <pending> }
num
num
num
Promise { <pending> }
Promise { '1' }
Promise { <pending> }
2.填坑
1.经过util.promisify的那些函数,已经不能再返回immediate类.
const util = require('util');
const setImmediatePromise = util.promisify(setImmediate);
setImmediatePromise('foobar').then((value) => {
// value === 'foobar' (传值是可选的)
// 在所有 I/O 回调之后执行。
});
var timer1 = setImmediate(function(){
clearImmediate(timer1)
console.log("1"+timer1.ref()+'2')
})
console.log(timer1.ref())
他的方式都是从timer1 来获得一个immediate的返回值,然后 你可以在外面或者在里面根据你的需求进行操作.
2.关于hasref()
var timer1 = setImmediate(function(){
console.log("1"+timer1.hasRef())
//clearImmediate(timer1);
//console.log("1"+timer1.ref()+'2');
})
var timer1 = setInterval(function(){
// timer1.ref();
console.log(2+timer1.hasRef())
//clearImmediate(timer1);
//console.log("1"+timer1.ref()+'2');
},1000)
//console.log(timer1.ref());
var timer2 = setImmediate(function(){
console.log("1."+timer2.hasRef())
//clearImmediate(timer1);
//console.log("1"+timer1.ref()+'2');
})
var timer1 = setTimeout(function(){
// timer1.ref();
console.log("2."+timer1.hasRef())
//clearImmediate(timer1);
//console.log("1"+timer1.ref()+'2');
},1000)
//console.log(timer1.ref());
Timerout类hasref是true的.
3.关于如何使用刷新功能
var timer1 = setTimeout(function(){
console.log("2."+timer1.hasRef())
timer1.refresh()
},1000)
那就这样了,同步和异步的调用都讲了,如果有问题,请留言.