7

別の機能が完了した後に、ある機能を実行しようとしています。

 $.when(saveCanvas(canvas)).done(setWallPaper());

各関数はそれ自体で正常に動作しますが、上記のコードを実行すると、最初の関数のみが実行されます。

何を変更する必要がありますか?

4

3 に答える 3

9

別の SO question に関するコメントによると、遅延$.whenオブジェクトが引数として期待されます。何も渡さない場合、コールバックはすぐに呼び出されます。

setWallPaper()以前に実際に実行されているため、動作していないように見えsaveCancas(canvas)ますか? saveCanvas()は実際にはdeferred objectではありませんwhen。遅延オブジェクトにするには、関数dfr = $.Deferred();の先頭と末尾に追加します。詳細については、この SO の回答をご覧ください。saveCanvas()return dfr.promise();

function saveCanvas(canvas)
{
    dfr = $.Deferred();
    //Your code
    return dfr.promise();
}

詳細: http://api.jquery.com/jQuery.when/

于 2013-03-24T02:46:20.843 に答える