gpt4 book ai didi

javascript - 使用操作表返回 promise

转载 作者:行者123 更新时间:2023-11-28 05:09:09 25 4
gpt4 key购买 nike

我正在尝试使用操作表( ionic )返回 promise 。

错误:

TypeError: Cannot read property 'then' of undefined at CambiarImagenesController.seleccionarImagen (cambiarimagenes.controller.js:33)

这是有问题的函数( Controller ):

  function seleccionarImagen() {
cambiarImagenesService.seleccionarImagen() //line 33
.then(reemplazarImagen);

我认为问题在于函数“seleccionarImagen”没有正确返回 promise 。

这就是函数“seleccionarImagen”

function seleccionarImagen(){
console.log("paso 1");
// Show the action sheet
$ionicActionSheet.show({
buttons: [
{ text: 'Cámara' },
{ text: 'Galería' }
],
cancelText: 'Cancelar',
cancel: function() {
// add cancel code..
},
buttonClicked: function(index) {
if(index == 0){
var promise = obtenerImagen(Camera.PictureSourceType.CAMERA)
.then(function(val){
// asignamos el valor asincrónico
urlImagen = val;
// retornamos el valor a la cadena
return val;
});
// retornamos la promesa de manera síncrona
return promise;
}
else if(index == 1){
var promise = obtenerImagen(Camera.PictureSourceType.PHOTOLIBRARY)
.then(function(val){
// asignamos el valor asincrónico
urlImagen = val;
// retornamos el valor a la cadena
return val;
});
// retornamos la promesa de manera síncrona
return promise;
}
}


})
}

有一些像“obtenerImagen”这样的方法可以完美地返回 promise 。我知道这一点,因为我做了一个弹出窗口并正确地返回了我的 promise ,但现在我需要一个操作表。

感谢您的帮助!

最佳答案

您需要自己创建一个 promise ,并在获取图像时解析/拒绝它,如下所示:

function seleccionarImagen() {
return new Promise(function (resolve, reject) {
$ionicActionSheet.show({
buttons: [
{text: 'Cámara'},
{text: 'Galería'}
],
cancelText: 'Cancelar',
cancel: function () {
reject();
},
buttonClicked: function (index) {
if (index == 0) {
obtenerImagen(Camera.PictureSourceType.CAMERA)
.then(function (val) {
// asignamos el valor asincrónico
urlImagen = val;
// retornamos el valor a la cadena
resolve(val);
});
}
else if (index == 1) {
obtenerImagen(Camera.PictureSourceType.PHOTOLIBRARY)
.then(function (val) {
// asignamos el valor asincrónico
urlImagen = val;
// retornamos el valor a la cadena
resolve(val);
});
}
}
})
});
}

关于javascript - 使用操作表返回 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41522168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com