値をデータベースに保存した後、js約束を使ってページを更新したいとします。私のコードはjQueryのイベントリスナー内にラップされ約束事を使って別の機能が完了した後にJavascript機能を実行するには?
:
$("img[class=okButton]").click(function(){
var field_userid = $(this).attr("id");
doThisFirst();
// then make a promise
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
wait(500).then(() => writeNewRoom(field_userid)); // function to write to database
refreshPage(); // after write has finished
});
///////////////////
function writeNewRoom(field_userid)){
// ajax to do something;
}
///////////////////
function refreshPage(){
if(window.confirm("Click to refresh")){location = location}
}
意図した動作が最初のデータを処理することで、その後、(refreshPageでページを更新する前にwriteNewRoom()関数で「何かをする」を完了) 関数。
実際には、最初のdoThisFirst()関数は正しく処理されていますが、3番目の関数のwindow.confirmボックスは、writeNewRoom関数が実行される前にポップアップします。
これまで私は約束を使用したことがないので、何が問題になったのかを誰でも理解できますか?私はmozillaのウェブサイトから基本的な構文を取った:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
何か助けが大変ありがとう。
'.then'コールバックの中で実行しますか? – jonrsharpe
[promise chaining](https://javascript.info/promise-chaining#returning-promises)は役に立ちますか? – evolutionxbox