对象内部的JS异步

时间:2019-03-05 15:52:51

标签: javascript node.js asynchronous

异步无效。我正在使用SlimSelect.js和NeDB。 “ addable”已执行,但不要等待nedb更新添加新字段。谢谢

if [[ $( find filename -mmin +60 | wc -l ) -eq 1 ]]; then echo banana; fi 
banana

1 个答案:

答案 0 :(得分:-1)

如果未实现异步函数(不返回Promise),则不能只是“等待”异步函数(该函数稍后将执行回调并返回结果)。如果代码如下更改,则addable返回Promise,

addable: function (value) {
    var newid = "nuevo";
    // if (value === 'bad') {return false}
    var agrabar = {
      name: value,
      last_idcuenta: "null",
      email: "notdefined@gmail.com",
      memo: "not available",
      auditlog: moment().format('MMMM Do YYYY, h:mm:ss a')
    }

    return new Promise((resolve, reject) => {
        dclipro.update({name: value}, agrabar, options, function (err, numReplaced, upsert) {

            if (err) {
                console.error(err);
                return reject(error);
            }

            newid = upsert._id;

            resolve({ text: value, value: newid });
        });
    });
},

然后可以像这样await

let result = await selectclipro.addable('New name');
console.log(result.value);

,这应该在async函数体中执行或包装在异步IIFE