从另一个文件调用异步函数

时间:2020-02-03 15:57:56

标签: javascript react-native

我有一个类,并且从其调用API。但是我正在重构代码,我想从另一个文件中调用此函数。 那是我当前的函数,该类在Screen类的同一文件中调用。

MyScreen.js

addWishList(product) {
 this.addProductsToWishlist(product);
}


 async addProductsToWishlist(product){
  const loggedCustomerID = await SecureStore.getItemAsync('loggedUserCustomerID');
  const wishListID = await SecureStore.getItemAsync('loggedUserWishlistID');
    try {
      let dataRequest = {
        method: 'POST',
        body: JSON.stringify({
          CustomerID: loggedCustomerID,
          WishlistID: wishListID,
          WishlistProducts: [{
            ProductID: product.ProductID,
            Quantity: 1,
            WebSiteID: 1
          }
          ]

      }),
        headers: HEADERS_API
      }

      const addProductsToWishlistApiCall = await fetch(ADD_PRODUCT_WISHLIST_URL, dataRequest);
      const addProductsToWishlistApiResponse = await addProductsToWishlistApiCall.json();
      console.log(addProductsToWishlistApiResponse.SavedWishlistProductIDs)
      this.setState({wish: !this.state.wish});
      } catch(err) {
        console.log("Error fetching data-----------", err);
    }
  }

如何将这个函数放在另一个文件中,然后从我的屏幕文件中调用它?

2 个答案:

答案 0 :(得分:1)

您首先需要从函数定义文件中将其导出,然后从MyScreen.js导入。

For more on ES6 import/export

示例:

//------ lib.js ------
export const sqrt = Math.sqrt;
export async square = (x) => {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main.js ------
import { square, diag } from 'lib';

(async function() { 
 console.log(await square(11)); // 121
})()

console.log(diag(4, 3)); // 5

答案 1 :(得分:1)

您可以导出需要从其他文件调用的函数,然后在另一个文件中导入该函数并调用它。

# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
    dataX, dataY = [], []
    for i in range(len(dataset)-look_back-1):
        a = dataset[i:(i+look_back), 0]
        dataX.append(a)
        dataY.append(dataset[i + look_back, 0])
    return numpy.array(dataX), numpy.array(dataY)