Parse platform 如何将Parse.Promise与其他形式的Promise(如Bluebird/ES6原生承诺)混合使用?
我想在Heroku(节点)上运行我的一些Parse云代码,以启动Parse托管云代码的迁移过程 这两种环境之间的差异之一是,您使用的Parse SDK也不同。在节点上,我发现如果您执行Parse platform 如何将Parse.Promise与其他形式的Promise(如Bluebird/ES6原生承诺)混合使用?,parse-platform,promise,parse-cloud-code,bluebird,es6-promise,Parse Platform,Promise,Parse Cloud Code,Bluebird,Es6 Promise,我想在Heroku(节点)上运行我的一些Parse云代码,以启动Parse托管云代码的迁移过程 这两种环境之间的差异之一是,您使用的Parse SDK也不同。在节点上,我发现如果您执行 var Parse require('parse/node').Parse; 。。。然后,Parse.Cloud.httpRequest实际上丢失了 我正在寻找用于执行http请求的节点替代方案,并找到了。但是它与解析承诺不太相符: parsePromise1() .then(parsePromise2
var Parse require('parse/node').Parse;
。。。然后,Parse.Cloud.httpRequest
实际上丢失了
我正在寻找用于执行http请求的节点替代方案,并找到了。但是它与解析承诺不太相符:
parsePromise1()
.then(parsePromise2) // okay
.then(requestPromise) // CUSTOM HTTP REQUEST!
.done(parsePromise3) // this Parse promise always succeeds, and occurs even before the request is fully completed.
我想知道是否有人找到了更好的方法来转换解析承诺?谢谢。您可以使用
request-promise
包,该包使用promises支持包装request
,或者使用类似bluebird
的库,该库公开了将回调API转换为promises的方法
我建议您从解析承诺迁移到ES2015本机承诺(或者更强大的替代方案,如bluebird)。有了这些,你可以:
Promise.resolve(someParsePromise).then(() => // convert
return someParsePromiseFn()// return some Parse promise, that works
}).then(res => {
// more async work ...
});
同时避免
.done
。这一点都不理想,但你可以使用这种包装,从原生蓝鸟到原生承诺:
const Promise = require('bluebird')
function handle () {
return new Promise((resolve, reject) => {
handleWithNativePromise(...arguments)
.then(resolve)
.catch(reject)
})
}
好吧,我已经找到了答案的哪一部分,哪一部分还需要回答?嗯!那是个好主意。只要把第一个包起来。这就避免了对Parse.Promise进行修补的需要,这让人感觉非常不舒服。我来试试。
Promise.resolve
的设计方式是,解析承诺被Promise.resolve
安全地使用。