
1 scarlex 2017 年 2 月 9 日 直接返回 promise |
2 believeitcould 2017 年 2 月 9 日 es7 async await |
3 yiyizym 2017 年 2 月 9 日 这不就是同步执行么? 还用什么 Promise ? |
4 finian 2017 年 2 月 9 日 callback, promise, rx, async/await 任君选择 |
5 owt5008137 2017 年 2 月 9 日 via Android 好像只能回调,或者看下是否已支持 await |
6 zgoing OP @yiyizym @finian @owt5008137 正在练手 koa ,用了 npm 里一个 google translate 的包,它返回的就是一个 promise ,我想把这个 promise 的结果传给 koa 路由,然后就不知道了。。。 |
7 rogerchen 2017 年 2 月 9 日 promise 不是有 then 么,把后续逻辑写在 then 里边不就好了, poorman's await 。 |
8 abramstyle 017 年 2 月 9 日 路由就是 async 的,或者如果是 koa 1 那么就是 generator ,都支持异步。 给你个例子吧: 比如这个 controller : koa1: ```js a: function() * { const result = yield fetchTranslate(); this.data = result; } ``` koa 2: ```js async a(ctx, next) { const result = await fetchTranslate(); ctx.data = result; } ``` 没测试,可能有语法错误,大概就是这么个意思。 |
9 Jeepeng 2017 年 2 月 9 日 function fn() { return new Promise((resolve, reject) => { // do something resolve() }) } |
10 Sparetire 2017 年 2 月 10 日 via Android 异步是会传染的,最好 async 其次 co+generator ,或者把这个函数也 promise 化返回,最次 callback |
11 zgoing OP @abramstyle 非常感谢,你的代码解决了我的问题。可是我还是没有弄懂 koa 为什么会自动执行 promise 里的 resolve(),希望能帮帮我,谢谢 |
12 abramstyle 2017 年 2 月 10 日 因为 async 会创建一个异步函数,这时候如果在 promise 前加上 await 那么就会等待这个 promise 完成再继续执行。 generator 同理。不过 generator 先出现,但是因为 async/await 是 ES7 的东西,所以大家都跳过 generator 直接用上了 async/await. 这两个概念理解起来可能有点费劲,具体你可以找一些文章来学习一下 async/await 和 generator 。比如 https://ponyfoo.com/articles/understanding-Javascript-async-await |
13 libook 2017 年 4 月 7 日 函数里不能等 promise resolve 之后再返回,但是可以在 resolve 执行之前返回这个 promise 对象,让调用这个函数的程序拿到返回的 promise 再调用其 then 等方法拿到回调函数。 ```Javascript function f() { return new Promise((resolve, reject) => { // 做其他事 resolve(); }) ; } let thePromise=f();// 这一句是执行 f 函数,返回了一个 Promise 对象,复制给 thePromise 变量 thePromise.then(function(){ // 这里就是在 f 函数的 resolve 执行完之后才执行的程序。 }); ``` |