checkForURLS
という複数の関数があり、コールバックを返す別の2つの関数を呼び出します。両方のコールバックが返された後、配列をコールバックとして返す方法はありますか?私は純粋なJavaScriptで作業しています。配列に複数のコールバック応答を追加
function checkForURLs(uniqueURL, customURL, callback) {
var errors = [];
checkForUniqueURL(uniqueURL, function(UniqueURLCallback) {
if (UniqueURLCallback===true) {
errors.push("This unique URL is already taken, please try another.");
}
});
if (customURL.length>0) {
checkForCustomURL(customURL, function(customURLCallback) {
if (customURLCallback===true) {
errors.push("This custom URL is already taken, please try another.");
}
});
}
if (errors.length>0) {
return callback(errors);
} else {
return callback(false);
}
}
非同期機能との約束を扱うことの一例です。 checkForURLs(urlA、urlB、function(error){/ *コールバック関数でエラーを処理する* /}); '' 'を呼び出します。それはあなたが望むものではありませんか?なんでしょう? – Dario
それは空に戻っているようですが、コールバック(エラー)を返すために内側のコールバックの1つにコールバックを置くと、その特定のコールバックのためだけに機能します。何が起こっているのかは、if文が待たずにただちに返ることです。 jQueryを使用すると、「完了」のようなものを使用して戻ってきた可能性がありますが、JavaScriptの使い方はわかりません。 –
のように 'checkForUniqueURL()'のようなものは非同期であり、これはすべて約束を使って行うべきです。すべての関連コードを表示 – charlietfl