我想通过纯JavaScript或浏览器中的任何类型的控制台或其他任何方式来做到这一点.
可能吗?
谢谢
进一步说明:我想调试一个动画库.我想知道如果有多个对象被动画,是否创建了多个计时器.
getUser是一个异步函数吗?是否需要更长的时间解决?是否总是返回我的正确的价值someotherclass。
class IdpServer {
constructor() {
this._settings = {
// some identity server settings.
};
this.userManager = new UserManager(this._settings);
this.getUser();
}
async getUser() {
this.user = await this.userManager.getUser();
}
isLoggedIn() {
return this.user != null && !this.user.expired;
}
}
let idpServer = new IdpServer();
export default idpServer;
// another class
// import IdpServer from '...'
class SomeOtherClass {
constructor() {
console.log(IdpServer.isLoggedIn());
}
}
Run Code Online (Sandbox Code Playgroud) 假设我有一类Test包含大约10-20个方法的方法,所有方法都是可链接的。
在另一种方法中,我需要执行一些异步工作。
let test = new Test();
console.log(test.something()); // Test
console.log(test.asynch()); // undefined since the async code isn't done yet
console.log(test.asynch().something()); // ERROR > My goal is to make this
Run Code Online (Sandbox Code Playgroud)
由于其他所有方法都是可链接的,因此,如果不是这种唯一的方法,我觉得对用户来说很奇怪。
我有办法保持班级的可链接主题吗?
我已经想通过下一个方法在这个方法的参数内的回调函数,但它不是真正的链接。
test.asynch(() => something())
Run Code Online (Sandbox Code Playgroud)
与相同Promises,它并不是真正的链接。
test.asynch().then(() => something())
Run Code Online (Sandbox Code Playgroud)
我想要的结果是
test.asynch().something()
Run Code Online (Sandbox Code Playgroud)
这是一个演示我的问题的代码段:
let test = new Test();
console.log(test.something()); // Test
console.log(test.asynch()); // undefined since the async code isn't done yet
console.log(test.asynch().something()); // ERROR > My goal is to make …Run Code Online (Sandbox Code Playgroud)我正在尝试向原型添加"默认回调",如果没有提供,则会将异步方法的回调函数(以promise的形式)分配给异步方法.
目标是让一个类的异步方法链同步运行
Item.async1().async2()....asyncN()
Run Code Online (Sandbox Code Playgroud)
请注意,异步函数本身期望回调,但它们不会在函数调用中作为参数传递(这告诉我在回调查找失败时类需要默认行为)
Spec声明我无法直接修改原型方法的行为或副作用.我可以添加原型方法.我们无法了解这些原型方法的实现方式.
TLDR:如果不修改原型方法,如何链接N个异步方法并确保它们按顺序运行?
顺便说一下:如果我想实现promisified版本,那么宣传有问题的原型方法会很有帮助,但看起来我们受限于原始的函数调用