如何在 javascript/node..... 中执行简单的 yield?

How to perform a simple yield in javascript/node....?

我已经尝试了以下几种组合,但都没有效果。我只是想在准备好时暂停执行并 return 到路由器功能,然后释放响应。这可能吗?

var express = require('express');
var router = express.Router();
var request = require('request');

router.get('/', function(req, res, next) {

    var result = getJson();

    res.render('index', { title: result});

});


function *getJson(){
    yield request('https://myjson.json', function (error, response, body){
        return body;
    });
}




module.exports = router;

您要查找的是 async/await,而不是 yieldyield用于枚举的时候。您可以在 Mozilla Developer Network and this SO answer.

上阅读更多相关信息

async/await 都是 ECMAScript 7 语言特性,因此它们在浏览器中还不可用。您可以使用 Traceur compiler to translate/compile/transpile ES7 code into ES5 code, but I haven't tried it. An example can be found here.

generators 和 yield 的使用方式与 async/await 类似,详情请参考 check out this article by Jake Archibald