nodejs 8 利用原生 util.promisify() 实现 promise.delay()
2017-06-15 18:28
771 查看
Nodejs 8 在 util 包里新增了 promisify() 。这个方法基本和 bluebird 的 promisify() 作用一样,即把最后一个参数是 callback 函数的函数变成返回 promise 的函数;
下面代码,用 expressjs 做载体,创建了一个 web API,延迟 3 秒后随机返回标题为 Success 或者 Custom Error 的页面。
delayP() 的作用与 bluebird 的 promise.delay() 方法作用相仿,可以在 promise chain 中进行 delay 操作。
下面代码,用 expressjs 做载体,创建了一个 web API,延迟 3 秒后随机返回标题为 Success 或者 Custom Error 的页面。
delayP() 的作用与 bluebird 的 promise.delay() 方法作用相仿,可以在 promise chain 中进行 delay 操作。
"use strict"; var express = require('express'); var router = express.Router(); var util = require('util') /* 延迟 3 秒后,随机返回标题为 Success 或者 Custom Error 的页面 */ router.get('/', function (req, res, next) { getDelayedResult() .then(function(r){ console.log("delayed callback.") res.render('index', {title: r}); }) .catch(function(e){ console.log(e) res.render('index', {title: e.message}); }) }); async function getDelayedResult(){ console.log("async function."); return await delayP(3000) // await 后面必须返回 promise 类型 } function delay(t, cb) { // cb: function callback(){} setTimeout(function(){ var err = null; var rand = parseInt(Math.random() * 2); // 随机数取值范围为整数 0, 1 console.log(rand); if(rand) err = new Error("Custom Error"); cb(err, "Success."); // cb: 第一个参数是 err,如果 err != null,那么认为是错误,会进入 promise.catch() 分支; 否则,进入 then() 分支。 }, t) } var delayP = util.promisify(delay) // 模拟异步IO请求;使用原生 promisify() 把 delay 函数 promise 化,以返回 promise 类型; module.exports = router;
相关文章推荐
- 利用bluebird的promise 实现nodejs http下载异步调用的同步逻辑
- nodeJS的原生http服务利用插件实现前后端交互
- 利用Memcached在php下实现session机制 替换PHP的原生session支持
- JS实现Map,利用JS原生特性(上一篇是仿Java)
- 利用jsp和Servlet实现自己的原生JavaEE MVC框架
- iOS利用Cordova/PhoneGap实现js和原生之间的通讯
- 【ThinkPHP】Ajax,利用原生JavaScript的Ajax实现
- 利用KERNEL32 API函数实现的通用延时函数DELAY
- java@ 利用ArrayList实现dijkstra算法以及topological 排序算法(java.util.ArrayList)
- NodeJS中利用Promise来封装异步函数
- NodeJS中利用Promise来封装异步函数
- 利用tween,使用原生js实现模块回弹动画效果
- Nodejs,Express利用内置的session实现登录控制
- 基于promise.js实现nodejs的promises库
- 利用DNode实现php和nodejs之间的通信
- 如何利用google原生包在android平台上实现语音识别
- 利用Memcached在php下实现session机制 替换PHP的原生session支持
- 利用promise写出更加优美的nodejs程序
- 基于promise.js实现nodejs的promises库
- 利用promise写出更加优美的nodejs程序