【问题标题】:Angular 2 and Cloudkit JS - resolving response promisesAngular 2 和 Cloudkit JS - 解决响应承诺
【发布时间】:2016-12-25 02:56:34
【问题描述】:

我正在尝试让 Angular 2 与 Cloudkit JS 一起工作,目前是一个简单的 Todo。

todo.request.js

var todorequest = {
    get: function(){
        var container = CloudKit.getDefaultContainer();
        var publicDB = container.publicCloudDatabase;

        var query = {
            recordType: 'todo'
        };

        return publicDB.performQuery(query).then(function (response) {
            if(response.hasErrors) {
                throw response.errors[0];
            } else {
                let vals = [];
                response.records.forEach(function(record){
                    vals.push({title: record.fields['title'].value, text: record.fields['text'].value, date: record.fields['date'].value})
                })
                console.log(vals)
                return vals;
            }
        })
    }
}

这会返回Array [ Object, Object ],这是我想要的,到目前为止一切都很好。

todo.service.ts 有以下内容:

import { Injectable } from '@angular/core';
import { Todo } from './todo';

declare var todorequest:any;

@Injectable()
export class TodoService {

    constructor() {}

    getTodos() {
        return new Promise<Todo[]>(resolve =>
            todorequest.get() as Todo[] 
            );
    }
}

我假设我从 todorequest.get() 得到的是一个承诺,例如Object { Symbol(record)_1.k31kpejw2af: Object }。我如何将它转换为 Todo[],这样我就可以使用数据了?老实说,我不确定自己做错了什么。

【问题讨论】:

    标签: angular es6-promise angular2-services cloudkit-web-services


    【解决方案1】:

    想通了!我在服务中缺少 resolve

    getTodos() {
            return new Promise<Todo[]>(resolve =>
                resolve(todorequest.get())
                );
        }
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 2014-07-07
      • 2016-12-03
      • 2017-06-04
      • 2017-03-18
      • 2015-12-06
      • 1970-01-01
      • 2017-05-25
      相关资源
      最近更新 更多