我有三個功能。呼叫層次是這樣的:如何在繼續之前等待一個功能完成?
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