2016-07-12 29 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

什麼不會有用嗎? – Bergi

+0

它只是掛起。永遠不要進入foo的內部。 – MayNotBe

回答

1

你在正確的軌道上,但Parse的承諾構造函數不採取解析/拒絕功能。相反,有你的包裝構建和返回而不PARAMS一個承諾,然後調用這個承諾的resolve()reject()方法在包裝的函數的回調,就像這樣:

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

謝謝@danh!像魅力一樣工作。 – MayNotBe

相關問題