Dexie如何将结果分配给变量? [复制]

Posted

技术标签:

【中文标题】Dexie如何将结果分配给变量? [复制]【英文标题】:Dexie how to assign a result to a variable? [duplicate] 【发布时间】:2021-08-11 08:30:21 【问题描述】:

我一直在尝试将 var 分配给 result 却没有运气

self.addProductToCart = function (data, event) 

    var theproduct = db.pos_products.get(id: data.idProduct).then(function (pos_product) 
                        // console.log(pos_product.value); // returning results, which indicates it is working
                        return pos_product.value
                ).catch(function(error) 
                    console.log ("Ooops: " + error);
                );
                
                
     console.log (theproduct); // retunrning no results   only    DexiePromise  listeners: Arrar(0), _lib.....


我也试过


    async function myfunction(idProduct) 
        let result = await db.pos_products.get(id: idProduct).then(function (pos_product) 
                return pos_product.value
        ).catch(function(error) 
            console.log ("Ooops: " + error);
        );
    
    
    
    self.addProductToCart = function (data, event) 

        var theproduct = myfunction(data.idProduct);
            console.log ('theproduct');
            console.log (theproduct); // retunrning Promise <pending>
    

我希望有人可以提供帮助。我需要变量 theproduct 稍后在 current 中使用

【问题讨论】:

【参考方案1】:

我不确定您的代码为什么不起作用,但我经常看到初学者程序员不知道如何使用 async/await 和 promises,例如,您等待 dexie 调用,然后在它之后有一个 .then,我我很确定不要玩得这么好? 不过不管怎样,下面的代码应该可以工作,去看看 dexie 文档,这些简单的查询在那里描述得很漂亮。

const pos_products = await db.pos_products.get(id: idProduct);
console.log(pos_products.value);
//OR
const  value: pos_products  = await db.pos_products.get(id: idProduct);
console.log(pos_products);

【讨论】:

【参考方案2】:

我通过将 async 添加到 self.addProductToCart = async 函数解决了这个问题

    async function myfunction(idProduct) 
        var pos_product = await db.pos_products.get(id: idProduct);
        return pos_product.value;
    

self.addProductToCart = async function (data, event) 
        var pos_product = await myfunction(data.idProduct);
        console.log(pos_product);

【讨论】:

以上是关于Dexie如何将结果分配给变量? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将表达式的结果分配给 SQL 替换变量?

如何将选择结果分配给变量?

如何将选择的结果分配给 sqlplus 变量

我可以为javascript中if语句的结果分配一个变量吗? [复制]

如何将前一个表达式的结果分配给变量?

如何将相同的 var 类型变量分配给不同的 linq to sql 结果集?