2017-04-14 56 views
1

我刚开始学习angular4和typescript。所以,如果这是一个非常基本的问题,那么请原谅我。从array.splice中返回void

在我的角度服务我定义的方法等:

removePerson(person: Person): Promise<void> { 
    return Promise.resolve(PERSONS.splice(PERSONS.indexOf(person), 1)); 
    } 

编译器抱怨我,我应该从Promise<void>

函数的返回类型更改为Promise<Person[]>,但我想从返回void那诺言。我怎样才能改变我的功能的身体?

+0

拼接数组是同步的...不应该需要一个承诺在这里所有 – charlietfl

+0

@charlietfl我想使用承诺,因为在拼接数组后,我应该知道该元素已从数组中移除,因此,我可以将数组用于其他目的。] – Vishal

+0

['Promise.resolve()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve)返回一个Promise。 – mhodges

回答

1

那么它应该是

function removePerson(person: Person): Promise<void> { 
    PERSONS.splice(PERSONS.indexOf(person), 1); 
    return Promise.resolve(); 
} 

removePerson是同步的,并承诺在这里什么都不做。如果没有真正的理由为它返回一个承诺(如现有的API,其中removePerson应该返回一个承诺类实现),它可能会更改为

function removePerson(person: Person): void { 
    PERSONS.splice(PERSONS.indexOf(person), 1); 
} 
+0

谢谢你的男人。这应该很好。它的工作正常。 – Vishal

+0

不客气。 – estus

1

返回“空缺”在JavaScript中表示不返回任何事情是这样的:

removePerson(person:Person){ 
    PERSONS.splice(PERSONS.indexOf(person), 1); 
} 
+0

这应该很好,但我正在努力学习承诺,所以你可以帮忙吗? – Vishal

+0

我建议你搜索谷歌关于角2和observables,你会发现很多教程(如果你需要等待结果(如从服务器)),你需要承诺)。 – Sheki