Comments (5)
Thank you for your explain.
from async-to-gen.
Could you provide more info about what you expect to happen and what you see instead?
When I run your first example in async-node
// iife
(async () => {
await test()
})()
I get the correct output of a Promise.
Your second example is not legal syntax for the same reason that the following is not legal syntax:
(() => {
test()
}())
Crockford style iifes only work with function expressions, not arrow functions, and async functions work in this style as well in async-node
. This example returns a Promise:
(async function () {
test()
}())
from async-to-gen.
Added these two IIFE to the test cases to illustrate that they transform as expected
from async-to-gen.
Below case breaks:
const test = {
async run () {
}
}
(async () => {
await test.run()
})()
error:
iife.js:6
(() => __async(function*(){
^
TypeError: (intermediate value) is not a function
from async-to-gen.
That error is expected given that code (though node could be more helpful with its errors).
You can test this by trying the same thing using node without the async/await (not using this library at all):
const test = {
run () {
}
}
(() => {
test.run()
})()
iife.js:6
(() => {
^
TypeError: (intermediate value) is not a function
This is because of Automatic Semicolon Insertion (a good resource: https://github.com/getify/You-Dont-Know-JS/blob/master/types%20%26%20grammar/ch5.md#automatic-semicolons)
This is because any expression followed by ()
assumes that you mean the previous expression is a function to be called. In this case: const test = {run(){}}(()=>{test.run()})
JavaScript thinks test
will be assigned the result of a function call where {run(){}}
is the "intermediate value" function to call and ()=>{test.run()}
is the argument to the function.
Check out https://astexplorer.net/#/efPw48Ufoh to see how JavaScript parses this.
The fix is to ensure there's a semicolon somewhere before your IIFE.
from async-to-gen.
Related Issues (20)
- Support more extensions in register hook HOT 2
- aasync-to-gen breks babel-register HOT 1
- async-to-gen conflicts with babel HOT 11
- Use with Jest HOT 2
- Invalid async lambda generation HOT 2
- TypeError: Cannot read property 'type' of null HOT 8
- In node.js sourceMaps off? HOT 5
- memory leak HOT 3
- require hook is only usable in development? HOT 4
- `referencesArgs: true` causes SyntaxError in strict mode HOT 3
- Add license file to repo HOT 2
- Unexpected yield from async function with for await statement HOT 8
- Is there a way to remove the require hook? HOT 8
- Better output when parser fails HOT 3
- Comparison with fast-async? HOT 2
- Indlude a specific dir inside node_modules HOT 4
- Arrow function with parenthesised object literal causes syntax error HOT 2
- Windows Encoding is UTF 16 LE by default HOT 1
- [async-node]: support for require flag? HOT 6
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 async-to-gen.