我必须使用一个返回promise并且在函数内部的方法。我想在promise的<ActionBar title="Groceries">
<ActionItem text="Share" (tap)="share()"
android.systemIcon="ic_menu_share_holo_dark"
ios.systemIcon="9" ios.position="right"></ActionItem>
</ActionBar>
<GridLayout rows="auto, *">
<GridLayout row="0" columns="*, auto" class="add-bar">
<TextField #groceryTextField [(ngModel)]="grocery" hint="Enter a grocery item" col="0"></TextField>
<StackLayout class="delete-container" height="100%" (tap)="add()" col="1" >
<Image src="res://add" stretch="none" horizontalAlignment="center"></Image>
</StackLayout>
</GridLayout>
<ListView [items]="groceryList" row="1" class="small-spacing" [class.visible]="listLoaded">
<ng-template let-item="item">
<GridLayout columns="*, auto">
<Label col="0" [text]="item.name" class="medium-spacing"></Label>
<StackLayout col="1" class="delete-container" height="100%" (tap)="delete(item)">
<Image src="res://delete"></Image>
</StackLayout>
</GridLayout>
</ng-template>
</ListView>
<ActivityIndicator
[busy]="isLoading" [visibility]="isLoading ? 'visible' : 'collapse'"
row="1" horizontalAlignment="center" verticalAlignment="center"></ActivityIndicator>
</GridLayout>
中返回父函数的值。
.then()
如何使用打字稿/ Javascript进行此操作?
答案 0 :(得分:0)
您可以使用async/await
。
async function foo() {
try {
var val = await theFunctionThatReturnsAPromise();
console.log(val);
}
catch(err) {
console.log('Error: ', err.message);
}
}
但是返回值仍然是Promise,因为它是异步的。
为了更好地理解,您可能需要阅读this tutorial。
答案 1 :(得分:0)
您无法直接退货,因为您想要退货的东西不能立即获得。这就是我们使用promises等异步事件的全部原因。很难从几行代码中确切地知道你在做什么,但一般来说你只想返回承诺并允许函数的调用者来处理它。
例如:
returnSomething():Promise<boolean>{
return theFunctionThatReturnsAPromise()
}
然后调用者可以处理如下值:
returnSomething()
.then(result => {
if (result) { //etc.}
}
.catch( err => { console.log("an error happened", err)}