小编use*_*239的帖子

如何在调用 this._super 之前捕获 Promise?JavaScript

我想从我的请求“instance.web.Model”获取结果,然后调用 this.super()。问题是“instance.web.Model”是异步的,所以在我的例子中, super() 将在请求完成之前被调用。

MyObject.extend({

    init: function(parent, data){

        var newData = instance.web.Model('advanced.search')
        .call('check_duplication', [data]).done(function (name) {
            // do stuff
            return name
        });

        data = newData;
        this._super.apply(this, arguments);
        // super is called before my request is done so the new data are not sent to super.

    }
});
Run Code Online (Sandbox Code Playgroud)

你知道如何度过这个难关吗?为了将 newData 而不是 data 作为参数传递给超级对象。

PS:我试图将其封装在 self 中: var self = this; 但它不起作用,因为我扩展的父对象似乎继续运行而无需等待。所以我得到了像“self.super(...不是一个函数”这样的错误。

MyObject.extend({

    init: function(parent, data){
        var self = this;

        var newData = instance.web.Model('advanced.search')
        .call('check_duplication', [data]).done(function (name) {
            // do stuff
            var …
Run Code Online (Sandbox Code Playgroud)

javascript ajax asynchronous promise odoo

2
推荐指数
1
解决办法
3335
查看次数

标签 统计

ajax ×1

asynchronous ×1

javascript ×1

odoo ×1

promise ×1