Koa项目中使用await和async关键字报错

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/github_35631540/article/details/81533587

今天使用Koa搭建了一个后台接口系统,使用的mysql和Koa一些中间件

一开始关于路由是这样写的

在app.js中将router 传入路由中

require('./routes')(router)

然后路由中

router.get('/', Ctrl.hello)
module.exports = router.routes()

导出users-router对象

在控制器中是使用async和await 报关键字错误

查了一下一下原因,低版本的node是不支持一些ES6的用法的,但是我的版本是8.4,差不多稳定的最新版本

后来又查了一下原因,对比了网上的一个项目

发现 别人的Router引入方式不一样

遂 改成

在app.js中将路由的引入方式改为

app.use(require('./routers/signin.js').routes())

这两种路由的处理方式很不一样:

 第一种是将Router对象传入到路由管理器中,

第二种是将路由管理器引入到app.js中再执行routes()方法

最后 一步是 在项目启动时 加上 --harmory 这个参数是Node为了支持一些Js标准在Staged状态而设计的

Node官方解释

node --harmony app.js

 

Ok 项目顺利启动,爽快的去用async 和 await 吧

展开阅读全文

asyncawait关键字的一些小问题

01-08

我的理解是这样,大家看对不对,顺便大神们能不能稍微再讲讲这方面的知识,我看了看《C#高级编程》和《CLR viaC#》感觉还是不太明白:rn遇到await时候,代码就会异步执行后面的异步函数并直接返回,等到异步函数结束之后再次返回并执行其余的代码。相当于一个Task并调用ContinueWith方法,就像下面最后两个方法一样。rnrnrn顺便问一下,原来的异步模式和基于事件的异步模式是不是不用再去研究了,《C#高级编程》好像也只说了一点。rnrn顺便再问一下,我现在应该看什么参考书。看了几本C#的入门,感觉算是入了个门。然后又看了一点《C#高级编程》和《CLR viaC#》,感觉《CLR viaC#》扯着我的淡了,一时间有点不好接受。另外《C#高级编程》很好很强大,但是其中有些内容感觉目前用不上,是不是就不用再看了,等到时候需要用的时候再看。rnrn[code=csharp] /// rn /// 一个需要长时间执行的方法rn /// rn /// rn private static string DoSomethingLong()rn rn Console.WriteLine("5秒钟之后完成...请等待");rn Thread.Sleep(5000);rn return "abc";rn rnrn private static Task DoSomethingLongAsync()rn rn return Task.Run(() => DoSomethingLong());rn rn /// rn /// 获取长时间方法的值并显示rn /// rn /// rn private static void DoSomethingElse(string str)rn rn Console.WriteLine("结果是:" + str);rn rn /// rn /// 同步地执行方法rn /// rn public static void DoSynchronousWork()rn rn Console.WriteLine("同步地执行方法:");rn string data = DoSomethingLong();rn Console.WriteLine("等待结果:");rn DoSomethingElse(data);rnrn Console.WriteLine();rn rn /// rn /// 利用任务异步执行方法rn /// rn public static void DoWorkAsynchronouslyWithTask()rn rn Console.WriteLine("利用任务异步地执行方法:");rn Task something = Task.Run(() => DoSomethingLong());rn Console.WriteLine("等待结果:");rn Task somethingElse =rn something.ContinueWith(task => DoSomethingElse(task.Result));rn somethingElse.Wait();rn Console.WriteLine();rn rn /// rn /// 利用async和await关键字异步地执行方法rn /// rn public static async void DoWorkUseAsyncAndAwait()rn rn Console.WriteLine("利用async和await关键字异步地执行方法:");rn string data = await DoSomethingLongAsync();rn Console.WriteLine("等待结果:");rn DoSomethingElse(data);rn rn Console.WriteLine();rn [/code] 论坛

没有更多推荐了,返回首页