将变量设置为promise的结果

时间:2015-09-11 14:27:21

标签: promise

这更像是一个语法/可读性问题。假设我有这个:

  ProductsService.getProducts()
    .then(function (products) {
      model.products = products;
    }, function(){
      //handle error
    });

如果承诺得到解决,我会使用promise的结果填充model.products。有没有办法组织这个代码,所以它更像是:

model.products = //result of promise

我更喜欢将变量设置为前置和中心而不是将其置于承诺中。

2 个答案:

答案 0 :(得分:0)

在ES6及以下版本中,这是不可能的。

另外,在ES7中,我们可以使用await in combination with an async function来实现您正在寻找的“可读异步代码”类型:

ProductsService.getProducts = async function() {
    // returns a promise...
};

model.products = await ProductsService.getProducts();

如果你真的急于使用它,the functionality is available using Babel

答案 1 :(得分:0)

你可以这样做:

function setProduct(products) {
    model.products = products;
}

function foo(){
    return ProductsService.getProducts();
}

foo().then(setProduct);

但如前所述,你必须等待ES7或使用打字稿/巴贝尔