Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Promise中执行resolve或reject后如何执行某些代码_Javascript_Promise - Fatal编程技术网

Javascript 在Promise中执行resolve或reject后如何执行某些代码

Javascript 在Promise中执行resolve或reject后如何执行某些代码,javascript,promise,Javascript,Promise,我承诺在api调用后可以解析或拒绝,我想在解析或拒绝回调中执行一些代码,我想在这些回调完成后执行一些其他代码。如何实现它 ApiHelper.myPromise.call(this, 'Event').then(function(response) { ToolsHelper.DynamicAttributes.setDAMetaDataCache.call($this, 'Event', response, '#addEventDynamicAttribute');

我承诺在api调用后可以解析或拒绝,我想在解析或拒绝回调中执行一些代码,我想在这些回调完成后执行一些其他代码。如何实现它

ApiHelper.myPromise.call(this, 'Event').then(function(response) {
            ToolsHelper.DynamicAttributes.setDAMetaDataCache.call($this, 'Event', response, '#addEventDynamicAttribute');
            ApiHelper.ApiResponseHandler.hideSpinner();

            var eventEditFormView = new EventEditFormView({'parentObj': $this.parentObj, 'method': 'add'});
            eventEditFormView.context['dynamicAttributeMetaData'] = $this.context['dynamicAttributeMetaData'];
            eventEditFormView.context['newAccordions'] = $this.context['newAccordions'];
            $this.$('#event-edit').append(eventEditFormView.$el);
            eventEditFormView.render();
            eventEditFormView.delegateEvents();
        }).catch(function(response) {console.log('err', response);
            ApiHelper.ApiResponseHandler.logError(response, 'event_base_view', ' setDynamicAttributes', 'catalog/metadata/v3/dynamicattributes', 'v3');
            ApiHelper.ApiResponseHandler.hideSpinner();
        });

你可以把它们锁在一起。如果其中任何一个THEN抛出错误,它将转到catch

     ApiHelper.myPromise.call(this, 'Event')
     .then(function(response){
         ApiHelper.ApiResponseHandler.hideSpinner();
         return response;
     }
     .then(function(response) {
     ToolsHelper.DynamicAttributes.setDAMetaDataCache.call($this, 'Event', response, '#addEventDynamicAttribute');
        //ApiHelper.ApiResponseHandler.hideSpinner();

        var eventEditFormView = new EventEditFormView({'parentObj': $this.parentObj, 'method': 'add'});
        eventEditFormView.context['dynamicAttributeMetaData'] = $this.context['dynamicAttributeMetaData'];
        eventEditFormView.context['newAccordions'] = $this.context['newAccordions'];
        $this.$('#event-edit').append(eventEditFormView.$el);
        eventEditFormView.render();
        eventEditFormView.delegateEvents();
    }).catch(function(response) {console.log('err', response);
        ApiHelper.ApiResponseHandler.logError(response, 'event_base_view', ' setDynamicAttributes', 'catalog/metadata/v3/dynamicattributes', 'v3');
        //ApiHelper.ApiResponseHandler.hideSpinner();
    });

你可以把它们锁在一起。如果其中任何一个THEN抛出错误,它将转到catch

     ApiHelper.myPromise.call(this, 'Event')
     .then(function(response){
         ApiHelper.ApiResponseHandler.hideSpinner();
         return response;
     }
     .then(function(response) {
     ToolsHelper.DynamicAttributes.setDAMetaDataCache.call($this, 'Event', response, '#addEventDynamicAttribute');
        //ApiHelper.ApiResponseHandler.hideSpinner();

        var eventEditFormView = new EventEditFormView({'parentObj': $this.parentObj, 'method': 'add'});
        eventEditFormView.context['dynamicAttributeMetaData'] = $this.context['dynamicAttributeMetaData'];
        eventEditFormView.context['newAccordions'] = $this.context['newAccordions'];
        $this.$('#event-edit').append(eventEditFormView.$el);
        eventEditFormView.render();
        eventEditFormView.delegateEvents();
    }).catch(function(response) {console.log('err', response);
        ApiHelper.ApiResponseHandler.logError(response, 'event_base_view', ' setDynamicAttributes', 'catalog/metadata/v3/dynamicattributes', 'v3');
        //ApiHelper.ApiResponseHandler.hideSpinner();
    });

将代码放在一个函数中,并在两个回调中调用该函数。或者添加另一个
。然后(…)
调用。我不想在两个回调中调用另一个函数。我可以再加一次吗?它将在first-then或catch之后被调用吗?是的,它将被调用,请参见这里的示例:将代码放在一个函数中,并在两个回调中调用该函数。或者添加另一个
。然后(…)
调用。我不想在两个回调中调用另一个函数。我可以再加一次吗?它会在first then或catch之后调用吗?是的,它会调用,请参见此处的示例: