如何使用TypeScript返回正确的Promise

时间:2016-08-30 22:40:33

标签: angular typescript es6-promise

所以我正在用打字稿学习Angular 2.

我正在努力编写一个模拟服务,我相信如果服务成功获取对象,则返回Promise,如果发生任何事情则返回错误。

我尝试过以下代码,但看起来它不是打字稿的写法语法。

更新了代码:

for (var param=0; param<typeb.length; param++) {
    typeb[param]= typeb[param].split('=');
    obj[typeb[0]] = decodeURIComponent(typeb[1]);
}

但令我惊讶的是,打字稿抱怨&#34;返回表达式中没有最常见的类型&#34;。

什么是正确的代码?因此,如果返回正确的MyClass,我可以使用我的组件来消费,如果服务中存在任何MyClass则反映错误。

由于

2 个答案:

答案 0 :(得分:41)

将整个函数体嵌入Promise构造函数中是一种很好的做法,因此如果发生任何错误,它将被转换为拒绝。在这种情况下,它也解决了你的问题。我相信。

saveMyClass(updatedMyClass: MyClass) {
    return new Promise<Package>((resolve, reject) => {
        //saving MyClass using http service
        //return the saved MyClass or error
        var savedPackage : Package = updatedPackage;
        if (isSomeCondition) {
            throw new Error('No reason but to reject');
        }

        setTimeout( () => {
            resolve(savedPackage);
        }, 1500);
    });
}

答案 1 :(得分:0)

这是我为了自己的目的想出的一个例子:

const join = require('path').join
const spawn = require('child_process').spawn;

const learnDir = join(__dirname, 'learn')
const cp = spawn('du', ['-s', learnDir]);

cp.stdout.on("data", function (data) {
  const size = parseInt(data.toString().split(' ')[0].trim())

  console.log(size);
});