通过define中的require调用传递requirejs中的参数

时间:2015-03-31 11:12:59

标签: javascript requirejs amd

我是requirejs和AMD模块函数的新手,我试图从require调用中传递一个参数,但是我遇到了一些麻烦。我试图在一个必需的调用中将obj传递给fun方法。这需要调用在define方法中,如下面的代码所示。我按照此博客的说明进行操作:http://blog.novanet.no/4-strategies-for-passing-parameters-to-requirejs-modules/

define(['require'],function(require){
    var obj= {name:'random'};
    require({
        config : {
           'tagging' : obj
        }
    },['fun'],function(promise){
        promise.then(function(ret){
        //do something.
      });
   }   
}

然后我想在下面的代码中使用传递的obj参数。 在fun.js

//将obj传递给fun.js

define(['module','lie'],function(data,Promise){
    var promise = new Promise(function(res,rej){
        //do something
    });
}

但我在控制台上收到以下错误:

  

TypeError:depMaps.slice不是函数

解决这个问题的任何线索?

PS:如果有更好的方法,请告诉我。

谢谢,

1 个答案:

答案 0 :(得分:0)

这可以通过返回一个返回promise而不是直接返回promise的函数来轻松完成。然后,您可以将数据传递给此函数以获取承诺,并执行您希望对承诺和数据执行的任何计算。

define(['require'],function(require){
    var obj= {name:'random'};
    var data = {
       'tagging' : obj
    }
    require(['fun'],function(promiseGetter){
      promiseGetter(data).then(function(ret){
        //do something.
      });
   }   
}

和fun.js

define(['lie'],function(Promise){
    var promise = new Promise(function(res,rej){
        //do something
    });
    return function(data){ 
         //DO whatever you want to do with data here
         return promise;
    }
}