Lou*_*uis 3 observable deferred ionic2 angular
我习惯使用$q角度1.我正在迁移到角度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 (){
Run Code Online (Sandbox Code Playgroud)
你可以做同等的,用:
Promise.resolve(promise).then
Run Code Online (Sandbox Code Playgroud)
这基本上不区分承诺和价值观.
是的,你可以用同样的方式实例化q,但是new Promise()而不是$q()
let promise = Promise((resolve, reject) => {
if (/* some async task */) {
resolve('Success!');
} else {
reject('Oops... something went wrong');
}
});
Run Code Online (Sandbox Code Playgroud)
和
let promise = $q((resolve, reject) => {
if (/* some async task */) {
resolve('Success!');
} else {
reject('Oops... something went wrong');
}
});
Run Code Online (Sandbox Code Playgroud)
应该是等价的
| 归档时间: |
|
| 查看次数: |
4602 次 |
| 最近记录: |