我习惯于在Angular 1中使用$q
。现在我要迁移到Angular 2。
是否有一个等效的方法提供.when()
?
例如,我需要将以下代码迁移:
.service('updateProDB', [
'$rootScope',
'connectionStatus',
'$q',
'storageService',
'sendToServer',
'$ionicPopup',
function ($rootScope, connectionStatus, $q, storageService, sendToServer, $ionicPopup) {
'use strict';
var dbReadyDeferred = $q.defer(),
prodata = [],
prodataFieldNames = [];
this.get = function () {
var debugOptionUseLocalDB = 0,
prodata = [],
serverAttempts = 0;
if (debugOptionUseLocalDB) {
return fallbackToLocalDBfileOrLocalStorageDB();
}
if (connectionStatus.f() === 'online') {
console.log("Fetching DB from the server:");
return getDBfileXHR(dbUrl(), serverAttempts)
.then(function () { // success
console.log('-normal XHR request succeeded.');
return dbReadyDeferred.promise;
})
.catch(function (){
Observable.of
或Promise
。 - Pankaj Parkar.when()
方法。 - Adam.when()
没有将非 Promise 值包装成 Promise 并保留 Promise 不变吗?(所以when(when(1))
是一个返回 1 的 Promise)如果你执行Observable.of(Observable.of(1))
会发生什么?你会得到一串流 - 编辑:确认,它确实是这样,因此它们不是等价的。 - olivarra1