我必须编写异步函数,以便:
const myAsyncFunction = async(function* (promise) {
const data = yield promise;
console.log(data);
});
myAsyncFunction(Promise.resolve("Hello world")); // console: ‘Hello world!’`结果应该是-控制台:‘Hello!’
我认为这将是一个正确的实施:
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不是一个函数
我找到了一些例子生成器转发它所做出的任何承诺的结果。
但我不明白它是如何工作的,我的错误在哪里:
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));
}
);
}
};
}请解释一下我做错了什么?
发布于 2020-10-02 06:19:45
解决办法是
function async(cb) {
return async function () {
const generator = cb.apply(this, arguments);
const nextResult = generator.next();
const value = await nextResult.value;
generator.next(value);
};
}
const myAsyncFunction = async(function* (promise) {
const data = yield promise;
console.log(data);
});
myAsyncFunction(Promise.resolve("Hello World"));https://stackoverflow.com/questions/64151741
复制相似问题