让承诺归还一些东西

时间:2017-08-19 17:49:56

标签: javascript typescript promise

我必须使用一个返回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进行此操作?

2 个答案:

答案 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)}