所以我正在用打字稿学习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则反映错误。
由于
答案 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);
});