data);constdata2=awaitgetData()console.log('data2: ',data2);return'success'}// 这样的一个函数 应该再1秒后打印data 再过一秒打印data2 最后打印successtest().then(res=>console.log(res))复制代码
这是generator函数设计的一个比较难理解的点,但是为了实现我们的目标,还是得去学习它~ 借助这个特性,如果我们这样去控制yield的流程,是不是就能实现异步串行了? function* testG() { // await被编译成了yield const data = yield getData() console.log('data: ', data); const data2 = yield getData() co...
const gen = generatorFunc.apply(this, arguments) // 返回一个promise 因为外部是用.then的方式 或者await的方式去使用这个函数的返回值的 // var test = asyncToGenerator(testG) // test().then(res => console.log(res)) returnnewPromise((resolve, reject) => { // 内部定义一个step函数 用来一...
data);constdata2=awaitgetData()console.log('data2: ',data2);return'success'}// 这样的一个函数 应该再1秒后打印data 再过一秒打印data2 最后打印successtest().then(res=>console.log(res))复制代码
利用这个特性,我们只要编写一个自动执行的函数,就可以让这个generator函数完全实现async函数的功能。 constgetData=()=>newPromise(resolve=>setTimeout(()=>resolve("data"),1000))var test=asyncToGenerator(function*testG(){// await被编译成了yieldconst data=yieldgetData() ...
通俗浅显的理解Promise中的then 手写async await的最简实现(20行) ️爱心三连击 1.看到这里了就点个赞支持下吧,你的赞是我创作的动力。 2.关注公众号前端食堂,你的前端食堂,记得按时吃饭! 3.本文已收录在前端食堂github.com/Geekhyt,求个小星星,感谢Star。
利用这个特性,我们只要编写一个自动执行的函数,就可以让这个generator函数完全实现async函数的功能。 constgetData= () =>newPromise(resolve=>setTimeout(() =>resolve("data"),1000))vartest =asyncToGenerator(function*testG() {// await被编译成了yieldconstdata =yieldgetData()console.log('data: ', data...
利用这个特性,我们只要编写一个自动执行的函数,就可以让这个generator函数完全实现async函数的功能。 constgetData =()=>newPromise(resolve=>setTimeout(()=>resolve('data'),1000)) vartest = asyncToGenerator( function*testG(){ // await被编译成了yield ...
const data2 = await getData() console.log('data2: ', data2); return 'success' } // 这样的一个函数 应该再1秒后打印data 再过一秒打印data2 最后打印success test().then(res =>console.log(res)) 1. 2. 3. 4. 5. 6. 7. 8.
3. 实现 then 方法 then 方法用来注册当前 Promise 状态落定后的回调,每个 Promise 实例都需要有它,显然要写到 Promise 的原型 prototype 上,并且 then 函数接收两个回调函数作为参数,分别是 onFulfilled 和 onRejected 。 Promise.prototype.then =function(onFulfilled, onRejected){} ...