【发布时间】:2021-01-16 23:04:47
【问题描述】:
我必须编写 async 函数:
const myAsyncFunction = async(function* (promise) {
const data = yield promise;
console.log(data);
});
myAsyncFunction(Promise.resolve("Hello world")); // console: ‘Hello world!’`
结果应该是 - 控制台:'Hello world!'
我认为这将是一个正确的实现:
function async(cb) {
return cb().next();
}
const myAsyncFunction = async(function* (promise) {
const data = yield promise;
console.log(data);
});
myAsyncFunction(Promise.resolve("Hello world")); // console: ‘Hello world!’`
但我有一个类型错误: TypeError: myAsyncFunction 不是函数
我找到了一些例子generator forwards with the results of any promises it has yielded
但我不明白它是如何工作的,我的错误在哪里:
function async(cb) {
return function () {
let generator = cb.apply(this, arguments);
function handle(result) {
if (result.done) return Promise.resolve(result.value);
return Promise.resolve(result.value).then(
function (res) {
return handle(generator.next(res));
},
function (err) {
return handle(generator.throw(err));
}
);
}
};
}
请解释一下我做错了什么?
【问题讨论】:
-
报错是好的,
myAsyncFunction不是函数。请提供一个完整的 MWE,可以调用它来说明问题。记录当前输出和您的期望。请参阅此处的指南以获取有关提问的说明:stackoverflow.com/help/how-to-ask
标签: javascript generator es6-promise yield es6-generator