如果我屈服于 Promise,它会在继续之前等待 Promise 被解决吗
If I yield to a Promise does it wait for the Promise to be resolved before continuing
我正在努力理解如何使用生成器函数和迭代器为我正在考虑编写的库实现各种设计选项。
在了解了简单的生成器函数之后,我现在正在努力研究 Internet 上显示如何将生成器与 Promises 集成的示例。
一个问题是所有文章都是在关于 Promises 的 ES2015 规范可用之前写的,它们都使用 3 方库,我不知道有什么细微差别。
所以我不太明白的问题是,如果你 yield 并且生成器函数调用 .next(Promise returning function) ,一旦 .next 函数被调用,超出 yield 的语句是否继续,或者当返回的承诺解决。这些示例似乎暗示它会等到 Promise 解决,但我看不出原因的逻辑。
generator function calls .next(Promise returning function)
不,不是。发电机需要由某种东西驱动,它本身不会 运行。
does the statements beyond the yield continue as soon as the .next function is called
是的。这与你提供的价值无关,无论他们承诺与否。
为了获得预期的行为,.next()
仅在 yielded promise 实现时调用(或者 .throw
在拒绝时调用),您需要 运行 生成器像那样。与提议的 async
/await
语法相反,生成器自己不会这样做。这就是所有那些第 3 方库的用武之地:您不想自己编写这些东西(您也不想到处重复自己,也不太可能在第一次尝试时就做对)。
我正在努力理解如何使用生成器函数和迭代器为我正在考虑编写的库实现各种设计选项。
在了解了简单的生成器函数之后,我现在正在努力研究 Internet 上显示如何将生成器与 Promises 集成的示例。
一个问题是所有文章都是在关于 Promises 的 ES2015 规范可用之前写的,它们都使用 3 方库,我不知道有什么细微差别。
所以我不太明白的问题是,如果你 yield 并且生成器函数调用 .next(Promise returning function) ,一旦 .next 函数被调用,超出 yield 的语句是否继续,或者当返回的承诺解决。这些示例似乎暗示它会等到 Promise 解决,但我看不出原因的逻辑。
generator function calls .next(Promise returning function)
不,不是。发电机需要由某种东西驱动,它本身不会 运行。
does the statements beyond the yield continue as soon as the .next function is called
是的。这与你提供的价值无关,无论他们承诺与否。
为了获得预期的行为,.next()
仅在 yielded promise 实现时调用(或者 .throw
在拒绝时调用),您需要 运行 生成器像那样。与提议的 async
/await
语法相反,生成器自己不会这样做。这就是所有那些第 3 方库的用武之地:您不想自己编写这些东西(您也不想到处重复自己,也不太可能在第一次尝试时就做对)。