7.1版已经发布了,已经支持es7的async/await。
发布于 7 年前 作者 chinayaon 6666 次浏览 来自 问答

哪位朋友能给个详细的教程呢? 其实,有时候需求很简单,类似于: 使用request模块,写个getHtml(url)函数,返回一个网页的html源码。 然后每次调用的时候,我只需要简单的 var html=getHtml(‘http://www.baidu.com’); 而不用再写一长串的回调。

类似这样的需求,应该怎么用async/await,实现?

12 回复

还是需要开启 --harmony

@artisan,开启–harmony无所谓,async/await是大趋势,先用着,稳定版肯定会支持,不会等太久的

对 我都已经准备把我koa2项目中的babel去掉啦

是不是需要代码都要写成async、await 能跟回调写法混用吗? 比如路由用回调,但是业务方法用await/async

‘use strict’;

var express = require(‘express’); var router = express.Router(); var request = require(‘request’);

/* GET home page. */ router.get(’/’, async function(req, res, next) { res.render(‘index’, { title: ‘Express’ }); console.log(’------------------------------------get start-------------------------------------------\n’); var html=await getHtml(‘http://www.baidu.com’); console.log(html); console.log(’---------------------------------------------get end-------------------------------------------\n’); });

var getHtml = function (url) { return new Promise(function (resolve, reject) { request(url, function (error, response, body) { if (!error && response.statusCode == 200) { resolve(body); } else { resolve(‘error’); } }) }) }; module.exports = router;

node7.10 运行:supervisor --harmony ./bin/www

node还有不用pm2用supervisor的?

尴尬~~~

async/await如何控制并发数量呢?

var request = require('request');

var getBody = function (url) {
    return new Promise((resolve, reject)=> {
        request({
            url: url,
            timeout: 30000,
            headers: {
                'User-Agent': 'Mozilla/5.0 (Arch Linux kernel 4.6.5) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.0 Chrome/39.0.2146.0 Safari/537.36'
            }
        })
    })
};

(async function(){
    let body =await request('http://baidu.com');
    console.log(body);
})();

用 axios 这个库

回到顶部