2016-07-12 6 views
0

にコールバック関数をラップする:私が機能を持ってどのようにParse.Promise

function foo(aString, function(err, callback) { 
    //does stuff 
} 

私はParse.Promisesの長いシリーズの途中からその関数を呼び出す必要があります。

Parse.Promiseでどのようにラップできますか?

私が試した:

//... 
return new Parse.Promise(function(resolve, reject) { 
      foo(thatString, function(err, data) { 
       if(err) return reject(err); 
       resolve(data); 
      }); 
     }); 
}).then(function(data) { 
//... 

Parse.Promise.as()の代わりnew Parse.Promise()

すべてのヘルプなどの他のバリエーションがいただければ幸いです。

+0

そして、何をする代わりに、このように、ラップ機能のコールバックにその約束のresolve()reject()メソッドを呼び出し、ラッパーのビルドを持っているとのparamsのない約束を返しますそれでうまくいかないでしょうか? – Bergi

+0

ちょうどハングアップします。 fooの内部に決して届かない。 – MayNotBe

答えて

1

あなたは正しい軌道に乗っていますが、Parseの約束コンストラクタは解決/拒否機能を使用しません。

var wrappedFoo = function(aString) { 
    var promise = new Parse.Promise(); 
    foo(aString, function(err, data) { 
     if (err) { promise.reject(err); } 
     promise.resolve(data); 
    }); 
    return promise; 
}; 

このようにそれを呼び出します:

wrappedFoo("bar").then(function(data) { 
    // data will be the data passed to the foo callback 
}, function(err) { 
    // likewise for err 
}); 
+0

ありがとう@ダン!魅力のように働いた。 – MayNotBe

関連する問題