私は非同期や約束などを理解しようとしていましたが、基本的な理解はしていますが、期待した結果が得られません。Knockout.js非同期呼び出し関数が動作しない
私は次のように、HTMLのテーブルを持っている:
<table data-bind="visible: viewPrincipal()">
viewPrincipal()がtrueまたはfalseを返すべき関数です。 viewPrincipal()が単にfalseを返すかtrueを返すだけであれば、これは最も基本的なレベルで動作します。しかし、私がしようとしているのは、そこから真偽値を得る非同期関数を呼び出すことです。
function viewPrincipal() {
console.log("Seeing if person is in principal group");
return IsCurrentUserMemberOfGroup("Principal Members", function (isCurrentUserInGroup) {
console.log(isCurrentUserInGroup);
return isCurrentUserInGroup;
});
}
console.logが機能し、期待通りにtrueまたはfalseを返します。しかし、私は親viewPrincipal()関数がその真偽値を返すことを望み、私が得るのは "未定義"です。
私はIsCurrentUserMemberOfGroup()関数が完了するのに少し時間がかかりますが、なぜこれが起こっているのか理解していますが、修正方法はわかりません。私は関数を連鎖させる方法を知っていますが、knockout.jsのようなものを使用して表を表示するかどうかを判断しようとしているとき、どうやって連鎖するのか分かりません。
誰でも手助けできますか?
ありがとう!これは、ここでの他のコメントと一緒に、私にこの全部を理解させるのに非常に役立ちました。私はセキュリティ上の問題があると認識していますが、(幸いにも私にとって)この変更の要件は、ほとんどの人から特定のデータを隠すのではなく、ほとんどの人にとってフォームを小さくして短くすることです。私は今それで大丈夫です。 –