classWooCommerceProducts.js
import {
WooComRestApi
} from "~/plugins/classWooCommerceOrigin.js";
export class WooCommerceProducts {
constructor() {
}
//-- A method --
async get() {
const getproducts = await WooComRestApi.get("products").then((response) => {
return response.data
}).catch((error) => {
return "WooCommerceProducts get failre"
})
return getproducts
}
//or
//-- B method --
get() {
const getproducts = WooComRestApi.get("products").then((response) => {
return response.data
}).catch((error) => {
return "WooCommerceProducts get failre"
})
return getproducts
}
}
产品.vue
// -- A method --
methods: {
getProducts() {
const WooComProducts = new WooCommerceProducts()
WooComProducts.get().then((response) => {
this.products = response
}).catch((error) => {
throw new Error(error)
})
}
},
or
// -- B method --
methods: {
async getProducts() {
const WooComProducts = new WooCommerceProducts()
await WooComProducts.get().then((response) => {
this.products = response
}).catch((error) => {
throw new Error(error)
})
}
},
两部分的快速问题
我有一个js类正在从后端调用并获取产品数据,两个代码都有效,一个是html vue上的i async和await,另一个是js类上的i异步await,那么哪一个做对了?有人能告诉我它的不同剂量吗?
如何将数据或错误返回到函数getProducts,并返回与类相同的结果。如果失败返回";wooCommerceProducts:get failure;它将返回到我的getProducts catch错误函数。
分享您的建议,学习更多精彩内容。如果是你,你将如何执行?
async/await
只是promise.then()
的更现代的语法。把它们混在一起是没有意义的。
如何将数据或错误返回到函数getProducts
以异步语法显式返回数据(在try/catch
中)。在旧的promise样式中,返回promise。
//-- A method --
async get() { // note that no "then" appears here
try {
const response = await WooComRestApi.get("products");
return response.data; // note the return
} catch(err) {
console.log("WooCommerceProducts failure");
throw err;
}
}
//or, using the older syntax
//-- B method --
get() {
return WooComRestApi.get("products").then((response) => { // note the return
return response.data;
}).catch((error) => {
console.log("WooCommerceProducts get failure");
throw error;
});
}
我有一个js类正在从后端调用并获取产品数据,两个代码都有效,一个是html vue上的i async和await,另一个是js类上的i异步await,那么哪一个做对了?
与之前相同的模式";一种方法";是正确的,因为它不需要返回。对于";B方法";,你已经选择了新的风格,所以坚持下去…
// -- B method --
methods: {
async getProducts() {
const WooComProducts = new WooCommerceProducts()
try {
this.products = await WooComProducts.get();
} catch(error) {
// handle error
}
}
},