我有三个功能。呼叫层次是这样的:如何在继续之前等待一个功能完成?
function a() {
b();
c();
}
function b() {
d();
}
我想要的是完成b然后继续做c。但是d是异步的。我无权改变b和d中的任何内容。有什么办法来处理这种情况?对不起我的英语不好。
我有三个功能。呼叫层次是这样的:如何在继续之前等待一个功能完成?
function a() {
b();
c();
}
function b() {
d();
}
我想要的是完成b然后继续做c。但是d是异步的。我无权改变b和d中的任何内容。有什么办法来处理这种情况?对不起我的英语不好。
通常有两种方法可以用来同步呼叫。 首先,功能b
可以返回一个承诺:
function a() {
b().then(c);
}
function b() {
return new Promise(d);
}
其次,你可以使用一个回调:
function a() {
b(c);
}
function b(afterCallback) {
d();
afterCallback();
}
在这种情况下,你是不能修改实际的B或d功能,我只会写一个实现上述方法之一的新函数,并用它来代替b。
您在这两种情况下修改了'b'。问题说这是不允许的。 – Quentin
我想我们需要更多关于这个问题的细节。 'd()'有一个回调函数吗? d()'是否会返回一个你可以链接的承诺? – mc10
你可以查看'callbacks'或首选选项'promise' – Rajesh
如果'd'是异步的,我可以看出几乎异步函数采用回调函数。如果你能说出'd'的功能,那么帮助会更容易。 – choz