What happens when a promise is made in javascript?

Did not find a complete answer ..

What happens when a promise is made?

Is such a design

var p = new Promise()
p.resolve(value)

function * (){
  yield p
}

equivalently

function * (){
  yield value
}

?

UPDATE

How to mix different styles of asynchronous programming, for example, for frameworks such as koa?

Coa intermediaries work with generators, but there are many good packages that are based on promises (continued).

+5
source share
2 answers

As Felix says, a promise is another value that needs to be given up.

, promises . , , , , . :

function goGenerator *() {
  var userData = yield getUserData();
  yield checkuserData(userData);
}

getUserData checkUserData . ,

function goPromises() {
  return getUserData() . then(checkUserData);
}

promises. .

async function goAsyncFunction() {
  var userData = await getUserData();
  return await checkUserData(userData);
}

. , , , ES6.

, , , "", , promises - , , . co - Google. :

function spawn(generator) {
  var iterator = generator();

  return new Promise(
    resolve =>
      function iterate(val) {
        var {value, done} = iterator.next(val);
        if (done) { resolve(val); }
        else { Promise.resolve(value).then(iterate); }
      }() 
  );

} 

spawn(goGenerator). spawn , : spawn(goGenerator) . then(doMoreStuff).

. co - , yield promises, , , a la Promise.all.

+5

, ?

. - . , :

var promise = generator().next().value;
promise.then(...);
+6

Source: https://habr.com/ru/post/1617671/


All Articles