<script>
function run(generator) {
var it = generator();
function go(result) {
if (result.done) {
return result.value;
}
return result.value.then(function (value) {
return go(it.next(value));
}, function (error) {
return go(it.throw(error));
})
}
go(it.next());
}
function getFoo() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve('foo');
}, 5000)
})
}
run(function* () {
try {
var foo = yield getFoo();
console.log(foo);
} catch (e) {
console.log(e);
}
});
</script>
相同的功能 asyn 函数实现
<script>
function getFoo() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve('foo');
}, 5000)
})
}
async function run() {
try {
var foo = await getFoo();
console.log(foo);
} catch (e) {
console.log(e);
}
};
run()
</script>
function run(generator) {
var it = generator();
function go(result) {
if (result.done) {
return result.value;
}
return result.value.then(function (value) {
return go(it.next(value));
}, function (error) {
return go(it.throw(error));
})
}
go(it.next());
}
function getFoo() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve('foo');
}, 5000)
})
}
run(function* () {
try {
var foo = yield getFoo();
console.log(foo);
} catch (e) {
console.log(e);
}
});
</script>
相同的功能 asyn 函数实现
<script>
function getFoo() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve('foo');
}, 5000)
})
}
async function run() {
try {
var foo = await getFoo();
console.log(foo);
} catch (e) {
console.log(e);
}
};
run()
</script>