首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未定义的ReferenceError:未定义RSVP,使用require.js与rsvp时出错

未定义的ReferenceError:未定义RSVP,使用require.js与rsvp时出错
EN

Stack Overflow用户
提问于 2015-05-07 08:42:25
回答 2查看 2.8K关注 0票数 2

我正在编写一个演示,演示如何使用rsvp.js实现承诺中的错误处理。一切看起来都很好,直到我在标签中使用了rsvp.js的CDN url。现在,由于我在我的应用程序中有了用于加载模块的require.js,所以我尝试通过require.js语法加载rsvp.js模块。在Chrome选项卡中,我看到rsvp.js模块也被正确加载,但是我在控制台中得到了以下错误:

未定义的ReferenceError:未定义RSVP。

代码语言:javascript
复制
require(["bootstrap","js/rsvp"], function(bootstrap,rsvp) { 
$(document).ready(function () {
    function getEmployeeDetails() {
        var radioValue1 = $("input[name='option1']:checked").val();
        var requrl;
        if (radioValue1 == "fail") {
            requrl = "../../../testservice/getEmployeeIdss";
        } else {
            requrl = "../../../testservice/getEmployeeId";
        }
        return new RSVP.Promise(function (resolve, reject) {
            $.ajax({
                url: requrl,
                success: function (response) {
                    try {
                        $('#successBoard').append("<b> <i> Ajax Call 1 Succeeded! </i>  </b><br/>" + "Employee ID:" + response.stuId + "<br/>");
                        resolve(response.stuId);
                    } catch (e) {
                        reject(e);
                    }
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    console.log('Ajax 1 failed : Rejecting Promise 1');
                    $('#errorBoard').append("<b> <i> Ajax 1 failed : Rejecting Promise 1</i>  </b><br/>");
                    reject(thrownError);
                }
            });

        });
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-07 10:31:28

我看了一下RSVP源代码,发现了以下代码:

代码语言:javascript
复制
/* global define:true module:true window: true */
if (typeof define === 'function' && define['amd']) {
  define(function() { return RSVP; });
} else if (typeof module !== 'undefined' && module['exports']) {
  module['exports'] = RSVP;
} else if (typeof platform !== 'undefined') {
  platform['RSVP'] = RSVP;
}

第一个if是RSVP检测到它在AMD环境中运行并注册为AMD模块的地方。所以你不会有一个全球性的RSVP

现在,在您的代码中,您需要RSVP并将其绑定到rsvp变量(全部为小写)。因此,它可以作为rsvp访问,而不是RSVP。要么将其称为rsvp,要么将传递给require的函数中的变量名更改为RSVP

代码语言:javascript
复制
require(["bootstrap", "js/rsvp"], function (bootstrap, RSVP) { 

请注意,对Bootstrap的引用没有意义,因为它将自己安装为jQuery插件,因此您可以这样做:

代码语言:javascript
复制
require(["js/rsvp", "bootstrap"], function (RSVP) { 
票数 2
EN

Stack Overflow用户

发布于 2015-05-07 08:49:09

您没有定义RSVP,您已经包含了rsvp库,但是将它设置为变量rsvp而不是RSVP,所以当调用RSVP.Promise()时它会抛出错误。

基本用法通过- https://github.com/tildeio/rsvp.js/-

代码语言:javascript
复制
var RSVP = require('rsvp');
var promise = new RSVP.Promise(function(resolve, reject){});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30095991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档