使用Promise将uni.showModal封装为一个公共方法,并举例怎么使用
时间: 2023-09-14 16:05:25 浏览: 253
JavaScript异步回调的Promise模式封装实例
### 回答1:
好的,我可以回答这个问题。以下是将uni.showModal封装为一个公共方法的示例代码:
```javascript
function showModal(title, content) {
return new Promise((resolve, reject) => {
uni.showModal({
title: title,
content: content,
success: (res) => {
if (res.confirm) {
resolve(true);
} else if (res.cancel) {
resolve(false);
}
},
fail: (err) => {
reject(err);
}
});
});
}
```
使用示例:
```javascript
showModal('提示', '确定要删除吗?').then((res) => {
if (res) {
console.log('用户点击了确定');
} else {
console.log('用户点击了取消');
}
}).catch((err) => {
console.error(err);
});
```
这样,我们就可以通过调用showModal方法来显示一个模态对话框,并且可以通过Promise来获取用户的选择结果。
### 回答2:
使用Promise可以将uni.showModal封装为一个公共方法,以便在多个地方重复使用。下面是一个示例的封装方法:
```js
// 1. 封装为一个公共方法
function showModal(message) {
return new Promise((resolve, reject) => {
uni.showModal({
title: '提示',
content: message,
success: res => {
if (res.confirm) {
resolve(true); // 确认按钮点击时,将Promise的状态设置为resolve并返回true
} else {
resolve(false); // 取消按钮点击时,将Promise的状态设置为resolve并返回false
}
},
fail: err => {
reject(err); // showModal调用失败时,将Promise的状态设置为reject,并返回失败信息
}
});
});
}
// 2. 调用示例
showModal('确定删除这条记录吗?').then(confirm => {
if (confirm) {
// 用户点击了确认按钮
// 执行删除操作
} else {
// 用户点击了取消按钮
// 取消操作
}
}).catch(err => {
// showModal调用失败
console.error(err);
});
```
在上述示例中,我们首先将uni.showModal封装为一个名为showModal的公共方法,并通过Promise将其返回值进行封装。在调用showModal方法时,我们通过then方法来处理用户点击确认或取消按钮的反馈,通过catch方法来处理showModal调用失败的情况。
这样封装之后,我们可以在任意地方复用该公共方法。只需要调用showModal并传入相应的参数即可,而不需要重复编写showModal的回调函数逻辑。这样可以提高代码的可读性和复用性。
### 回答3:
使用Promise将uni.showModal封装为一个公共方法,可以通过封装来简化代码逻辑,并且使代码更可复用。
以下是一个示例的封装方法:
```javascript
function showModal(options) {
return new Promise((resolve, reject) => {
uni.showModal({
...options,
success: (res) => {
if (res.confirm) {
resolve(true);
} else {
resolve(false);
}
},
fail: (err) => {
reject(err);
}
});
});
}
```
在上述方法中,我们使用了Promise来创建一个异步操作。在这个封装方法中,我们调用了uni.showModal,并将options对象作为参数传递给它。我们在success回调中通过判断res.confirm的值来决定是resolve还是reject Promise,并传递给resolve的参数表示用户是否点击了确认按钮。
下面是一个使用封装方法的示例:
```javascript
showModal({
title: '提示',
content: '确认要删除吗?',
confirmText: '删除',
cancelText: '取消'
})
.then((result) => {
if (result) {
console.log('用户点击了确认按钮');
} else {
console.log('用户点击了取消按钮');
}
})
.catch((err) => {
console.error('显示模态框出错:', err);
});
```
在上述示例中,我们调用了封装的showModal方法,并传递了一个包含title、content、confirmText和cancelText属性的options对象作为参数。通过使用.then方法,我们可以在用户点击确认按钮或取消按钮后获得回调,并根据回调的结果来执行对应的操作。如果在调用过程中发生错误,可以通过.catch方法来捕捉并处理错误。
总而言之,通过使用Promise来封装uni.showModal方法,可以使代码逻辑更清晰,实现代码的复用性,方便进行错误处理与回调处理。
阅读全文