Code Monkey home page Code Monkey logo

Comments (6)

Seikho avatar Seikho commented on July 18, 2024

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.

yortus avatar yortus commented on July 18, 2024

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.

Jakobud avatar Jakobud commented on July 18, 2024

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.

yortus avatar yortus commented on July 18, 2024

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.

Jakobud avatar Jakobud commented on July 18, 2024

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.

yortus avatar yortus commented on July 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.