我称呼getText((函数,然后尝试解决承诺,但稍后无法获得字符串值。
var textFromElement = someElement.getText().then(function(text){return text})
var splittedText = textFromElement.split(" ")
如何获取文本以供以后使用?
您不了解的是JavaScript编译器如何处理承诺。
这是编译器看您的代码的方式;
var textFromElement = someElement.getText().then(function(text){return text})
var splittedText = textFromElement.split(" ")
1-所有变量均在函数范围的顶部创建,无论您分配的位置如何。
var textFromElement; (= undefined)
var splittedText; (= undefined)
2-是否可以为每行的最小工作量逃脱并移至下一行。
testFromElement = {promise element object};
splittedText = {promise element object}.split(" "); (= undefined)//This what you don't want.
3-从顶部开始,在未解决的线上做更多最小的工作。
testFromElement = {promise getText object};
4-从顶部开始,在未解决的线上做更多最小的工作。
testFromElement = "text text";
简而
很好的例子:
var splittedText;
it("should get split text", function(done) {
someElement.getText().then(function(textFromElement){
splittedText = textFromElement.split(" ");
done();
})
})
1-所有变量均在函数范围的顶部创建,无论您分配的位置如何。
var splittedText; (= undefined)
2-仅在此功能内完成(DONE DONE((称为
it("should get split text", function(done) {
3-是否可以为每行的最小工作量并移至下一行。
someElement = {promise element object};
4-从功能的顶部开始,并在未解决的线上进行最小的工作。
someElement.getText() = {promise getText object};
5-从功能的顶部开始,并在未解决的线上做更多的最小工作。
textFromElement = "text text";
splittedText = textFromElement.split(" "); (["text","text"]);
done(); //the compiler can now to work outside this function
您的问题是,您将.when((方法的分配分配给您的变量,而不是您作为参数提供的回调。
在所有量角/茉莉花中,所有这些都均具有异步测试的机制。
在这里您有ES6示例。
it('some description', (done) => {
someElement.getText().then(text => {
var splittedText = text.split(" ");
done();
});
});
和ES5:
it('some description', function(done) => {
someElement.getText().then(function(text){
var splittedText = text.split(" ");
}).finally(done);
});