1

プロジェクトで m.request を使用していますが、長時間実行される可能性があるリクエストがあるため、 で実行したいと考えていbackground:trueます。ただし、値が generated に設定されることはないようm.propです。

このスタック オーバーフローの回答に基づいた例で jsFiddle を作成しました: http://jsfiddle.net/u5wuyokz/9/

私が期待しているのは、ビューへの 2 番目の呼び出しの応答値が であるはずですが、ctrl.test.data()まだ があるようundefinedです。コードでPoint Aは、正しい値をログに記録します。ただし、Point Bではログに記録false, undefinedし、次にtrue, undefined.

何か間違ったことをしているのか、それともこれが期待どおりの動作なのかはわかりません。

jsFiddle からのコード:

var requestWithFeedback = function(args) {
  var completed = m.prop(false)
  var complete = function(value) {
    completed(true)
    return value
  }
  args.background = true
  return {
    data: m.request(args).then(complete, complete).then(function(value) {
        //Point A
        console.log(value);
        m.redraw()
        return value
    }),
    ready: completed
  }
};

var mod = {
        controller : function() {
            this.test = requestWithFeedback({
                method : "POST",
                url : "/echo/json/",
                serialize: serialize, 
                config: asFormUrlEncoded,
                data : {
                    json : "{\"name\" : \"testing\"}"
                }
            });
        },
        view : function(ctrl) {
            //Point B
            console.log(ctrl.test.ready(), ctrl.test.data());
            return m("div", ctrl.test.ready() ? 'loaded' : 'loading');
        }
    };
4

2 に答える 2