Node 6.14.0 asyncawait npm 包和谷歌云函数 -> Javascript 异步函数

Posted

技术标签:

【中文标题】Node 6.14.0 asyncawait npm 包和谷歌云函数 -> Javascript 异步函数【英文标题】:Node 6.14.0 asyncawait npm package and google cloud functions -> Javascript async functions 【发布时间】:2018-12-19 16:28:41 【问题描述】:

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

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

如果我按照说明声明函数,或者我以不同方式声明函数(我认为应该可以),我会得到错误“xx 不是函数”,我会得到“xx 未定义”。

下面是两个产生错误的 play sn-ps。数字 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 is not defined" 错误(我也尝试添加更多括号以符合此处的示例 - 使用相同包的页面的一半 - 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】:

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

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

【讨论】:

谢谢!!希望我早点问,浪费了这么多时间:D 没想到会有所作为,因为它与我在更高版本的 Node 上运行的代码没有什么不同。试图投票,但还没有代表有所作为;)

以上是关于Node 6.14.0 asyncawait npm 包和谷歌云函数 -> Javascript 异步函数的主要内容,如果未能解决你的问题,请参考以下文章

利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题

配置node低版本支持ES7

NodeJs使用asyncAwait两法

javascript asyncawait.js

asyncawait

AsyncAwait