节点6.14.0 asyncawait npm包和Google云功能-> Javascript异步功能

时间:2018-07-11 14:59:47

标签: javascript node.js asynchronous async-await google-cloud-functions

我已经为较新的Node版本编写了代码,希望将其实现为Google Cloud Function(GCF)。现在的问题是,GCF仅提供不支持异步功能的Node v6.14.0引擎。

我喜欢的解决方案是使用https://www.npmjs.com/package/asyncawait,因为我不需要进行重大更改(当以后希望使用新的Node时,我以后希望使用本机异步时,同样适用)。但是,即使我相信我正确地遵循了转换中的示例,也无法运行我的代码。

如果我按照指令声明函数,或者如果我以不同的方式声明函数(我认为应该起作用),则会收到错误消息“ xx不是函数”。

下面是两个产生错误的播放片段。 1)按照npm网站上的说明,2)替代。

数字1),按照说明->“ printStuff不是函数”错误

var async = require('asyncawait/async');
var await = require('asyncawait/await');

printStuff()

var printStuff = async (function () {
    var files = await (console.log("x"));
    var files2 = await (console.log("y"));
    return
});

数字2)备选->“未定义printStuff”错误(我也尝试过添加更多括号,以符合此处的示例-使用相同包的页面下半部  -SyntaxError: Unexpected token function - Async Await Nodejs

var async = require('asyncawait/async');
var await = require('asyncawait/await');

printStuff();

async (function printStuff() {
    var files = await (console.log("x"));
    var files2 = await (console.log("y"));
    return
});

任何帮助将不胜感激!

谢谢!

1 个答案:

答案 0 :(得分:2)

将函数调用移到定义下方:

var async = require('asyncawait/async');
var await = require('asyncawait/await');

var printStuff = async (function () {
    var files = await (console.log("x"));
    var files2 = await (console.log("y"));
    return [files, files2];
});

printStuff();

https://runkit.com/5b1e296261083b0012f4d373/5b461db6a6a0a90012a344cc