gpt4 book ai didi

Javascript:抛出异步链式方法

转载 作者:行者123 更新时间:2023-11-29 15:14:18 26 4
gpt4 key购买 nike

我有一个返回几个方法的类,可以像这样链接起来:

class MyClass{
foo(){
if(condition) return this;
else throw;
}

bar(){
if(condition) return this;
else throw;
}
}

条件是某些检查,根据类的内部状态可能为真或为假

我的想法是我可以像这样执行几个方法:

myInstance.foo().bar();

这样,如果任何方法中的任何条件失败,此语句将抛出错误。

但是,现在我正在尝试检查需要 promise 才能解决的条件:

class MyClass2{
asynCheck(){
myPromise.then((condition)=>{
... // returning a promise won't work
});

我想保持与以前相同的语法(添加 await/then),我不介意将 foo 和 bar 也更改为异步,只要以下语法有效:

await myInstance.foo().asyncCheck().bar();

有没有办法做到这一点?请注意,可能有多个 asyncCheck,并且可以按任何顺序调用

最佳答案

你也许可以通过一些主要的技巧来做到这一点......

class MyClass {
foo() {
const ret = new Promise((resolve, reject) => {
resolve(1);
})
ret.bar = this.bar.bind(this);
return ret;
}

bar() {
const ret = new Promise((resolve, reject) => {
resolve(2);
})
// hack `ret` to copy the methods over...
return ret;
}
}

(async() => {
const c = new MyClass;
console.log(await c.foo())
console.log(await c.foo().bar())

})()

关于Javascript:抛出异步链式方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50866915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com