Я могу выполнить обещание внутри объекта addable:. после сохранения нового клиента идентификатор, добавленный в slimselect, должен дождаться нового _id. Спасибо
Pay to*var Datastore = require('nedb');
var dclipro = new Datastore({filename: '/data/clipro.db', autoload: true});
var selectclipro = new SlimSelect({
select: '#bcofid_clipro',
valuesUseText: false,
addable: function (value) {
var newid = "";
var agrabar = {
name: value,
last_idcuenta: "null",
email: "[email protected]",
memo: "not available",
auditlog: moment().format('MMMM Do YYYY, h:mm:ss a')
}
dclipro.update({name: value}, agrabar, options, function (err, numReplaced, upsert) {
if (err) {
console.error(err);
}
newid = upsert._id;
})
iziToast.show({
title: 'Bank',
message: 'New Payee has been saved successfully',
position: 'topRight'
});
return { text: value, value: newid }
},
onChange: (info) => {
console.info('elegido : value ' +info.value);
console.info('elegido : text ' +info.text);
}
})
Трудно разобрать, что вы спрашиваете здесь. Похоже, вам нужно addable вернуть объект {text: value, value: newid}. Если вы не можете вернуть Promise от addable, это разрешится на это, то не уверен, что сможете, поскольку dclipro.update() является вашим асинхронным запросом (я предполагаю). Поскольку код работает сейчас, iziToast.show() и возврат будут происходить, пока ваш асинхронный запрос все еще выполняется. Вы не хотели бы показывать этот успех, пока не убедитесь, что у вас нет ошибки (так в обратном вызове update), и вы не можете вернуть то, чего у вас нет.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


SlimSelect, вау, эта штука устарела. Из документации видно, что ваш объект return является необязательным, и что вы должны иметь возможность делать что-то вроде selectclipro.setData(myNewValue) внутри обратного вызова обещания, если addable действительно может видеть selectclipro. (Убедитесь, что вы прочитали остальные мои комментарии выше)
Так где обещание? Как вы пытались использовать один?