Comments (6)
You'll need to:
const mytest = async(() => {
const options = {}
let response = await(got.get('https://www.google.com', options))
console.log(response)
})
asyncawait/async
and asyncawait/await
are functions.
from asyncawait.
Thanks @Seikho. @Jakobud does that answer your question?
The syntax you wrote is valid if you are using ES2017 async/await, but you'll still need a transpiler for that. This lib is much older and achieves the same runtime semantics using just functions.
from asyncawait.
Ah okay the ES2017 syntax is what my issue was. Thank you. I have simplified my example to this:
'use strict'
const async = require('asyncawait/async');
const await = require('asyncawait/await');
const mytest = async(() => {
const options = {}
let response = await(new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('hello world')
}, 2000)
}))
return response
})
let value = mytest()
console.log(value)
Now, my output is just
Promise {
_bitField: 0,
_fulfillmentHandler0: undefined,
_rejectionHandler0: undefined,
_promise0: undefined,
_receiver0: undefined }
I would expect the correct value to be 'hello world'
. What am I missing here?
from asyncawait.
mytest
is a function that returns a Promise
(just like an ES2017 async function does).
So at the outermost level of code you'll need to use then
to get at the final result, like this:
mytest().then(() => {
console.log(value);
});
from asyncawait.
I'm really confused as to the purpose of async/await
then if I would just write the same function without it:
const mytest = () => {
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('hello world')
}, 2000)
})
}
mytest().then((value) {
console.log(value)
})
I guess I was under the impression that the async/await
allows you to return value from a Promise-type of function where the value you get is what was resolved in that Promise. I feel like I'm missing something really fundamental about this. Perhaps just explain how would I use async/await
to clean up and simplify my function. Thank you for your patience.
from asyncawait.
I was under the impression that the async/await allows you to return value from a Promise-type of function where the value you get is what was resolved in that Promise.
That's exactly what it allows you to do inside the body of the async function. It may not seem much of an improvement for trivial asynchronous code, but it makes a big difference when you combine non-trivial control flow with asynchronous operations.
Say for example, something like attempting an asynchronous operation with several retry attempts if the operation fails. Inside an async function, you could do that with an ordinary for
loop and a try/catch
block. Threading the same logic together with promises alone is much more challenging. There are control flow libs to help with this, but the point is that with async/await you don't need these helper libs, since you can just use ordinary control flow statements. The end result is also easier to read and maintain IMO.
from asyncawait.
Related Issues (20)
- Fibers are more flexible(?) HOT 18
- Use with ES6 classes #2 HOT 1
- Not working on nw.js HOT 1
- Error: await functions, yield functions, and value-returning suspendable functions. HOT 1
- setTimout example? HOT 2
- Fiber not running HOT 1
- why so long time require this two packages? HOT 1
- Extra parentheses? HOT 2
- fibers v1.0.16 dependency breaks node 4.x HOT 1
- Using a for loop HOT 2
- await inside an awaited function
- Stuck within await()... HOT 2
- Installation issue on node version 9.0.0 HOT 1
- Using forEach with Callbacks function
- Not an issue, just a thank you. HOT 1
- asyncawait fails to build on Ubuntu 16.04.4 LTS HOT 3
- Examples in typescript HOT 1
- Upgrade fibers package for nodejs 10.x or 12.x HOT 6
- Await behavior in non Async function or normal function HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from asyncawait.