私は、ユーザーがテキストボックスを入力する共有フォームを持っています。約束を正しく使うには?
保存ボタンをユーザーがクリック。スクリプトはここから実行されます。
をすべてチェックtexboxが満たされているかどうか。
良い場合は、入力に基づいて外側のリストからいくつかのフィールドを取得し、それに基づいて他のリストを更新してください。
は新しい項目として入力を保存します。
問題:私はPreSaveAction()
という名前の関数を使用します。これは、ユーザーが「保存」ボタンをクリックしたときに呼び出され、true
フォームが返される場合にのみ呼び出されます。だからtrue
と返す前に私はフィールドのチェックとリストの更新を行う必要があります、私はこれを追加する場所を知らないreturn true
。これを直接PreSaveAction()
の内部に追加すると、asyncronが実行されているため、更新が行われる前に30〜40%のチャンスが返されます。私は少し助けが必要なので、私はjavascriptに新しいです。
私の簡素化のコードは次のようになります。
function PreSaveAction() //This start if the user click on the save button, and create a new item if return with true
{
var promresult;
if(textbox!="")
{
//do my staff based on promise like: promresult=promise.then(input textbox, get list field).then(update).then(resolve true, fail false)
return promresult; //this run before the update is completed and promresult get value
}
else
{
return false; //nothing happens if the textboxes are not filled yet.
}
}
私はおよそpromisesをよく読んで返す、私の詰め込むを行い、onclickの検出私は、彼らがどのように動作するかunderstandedと思いますが、私の場合でPreSaveAction()
は、(複数の機能を持っています正誤)。私はいくつかのアプローチを試しましたが、解決策を見つけることができませんでした。あるいは、私は完全に異なるアプローチを使用すべきですか?あなたの親切な助けをありがとう!
実際の非同期コードが表示されなくても、人々はあなたを助けられません。関数から非同期に取得された値を返そうとしているようです。それをしてはいけない。この値は、関数が返った時点では使用できません。非同期コールバックは、後で呼び出されます。 – jfriend00
私はコードを単純化し、プロブラムに集中しようとしました。なぜなら、長い間、そして理解しにくいコードでpplを嫌うことはなかったからです。しかし、あなたは私の問題の考えを持っているように見えます。これは不可能ですか?同様のアーカイブには他にどのようなソリューションがありますか?私の問題は、この "Presaveaction"は統合された関数であり、コンポーネントに分割する方法はわかりません。たとえば、単純なonlcickイベントを使用する場合は、チェックを行い、次の関数でリストを更新し、3つの関数で保存を強制します。 – Nefri
理論的な質問では、Stackoverflowはうまく機能しません。それは実際のコードと非常に特定の問題でより良く機能します。あなたの質問の操作部分はすべてあなたの非同期コードに入っていますが、あなたが共有しているものはありませんので、あなたの質問はほぼ完全に理論的です。それで、私が提供できる最良の答えは、[非同期呼び出しからの応答を返すにはどうすればいいですか]です(https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from -an-asynchronous-call/14220323#14220323)。 – jfriend00