首页 > 解决方案 > 使用异步解析是否合乎逻辑?

问题描述

我是 Promises 的新手,所以我想知道这是否可以:

this.someFunc()
  .then(() => {
    alert('loaded')
  });

someFunc() = () => {
  return new Promise(async(resolve) => {
    let obj = await AsyncStorage.getItem('some_val');

    //do stuff with obj

    resolve('yay, everything's done');
  });
};

或者我应该总是使用thenPromises,比如

return new Promise((resolve) => {
   AsyncStorage.getItem('some_val')
   .then((obj) => {
      // do stuff with obj
      resolve('yay')
   });

? 第一种方法是反模式吗?这是错的吗”?为什么?

标签: javascriptreact-nativepromise

解决方案


async关键字添加到函数使其返回 Promise。

忽略该承诺并将其包装在另一个承诺中并没有真正意义。它使代码对试图维护它的人感到困惑。

您可以将其重写为:

someFunc() = async () => {
    let obj = await AsyncStorage.getItem('some_val');

    //do stuff with obj

    return 'yay, everything's done';
};

推荐阅读