Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подскажите по функциям js / 6 сообщений из 6, страница 1 из 1
04.12.2014, 15:52
    #38825065
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по функциям js
Понадобилось написать простенький аддон к Firefox.

Нашел пример чтения файла:

Код: javascript
1.
2.
3.
4.
5.
6.
let promise = OS.File.read("file.txt", { encoding: "utf-8" });
promise = promise.then(
  function onSuccess(text) {
    return text;        // text is a string
  }
);



если return заменить на console.log(text); то текст в консоль выводится, а если например пытаться присвоить text глобальной переменной, то в ней пусто...

я в js не силен, чтото получается потому что он "похож на С++" :) поэтому не могу понять, куда возвращает значение return в оригинальном примере.

Подскажите как достать текст.
...
Рейтинг: 0 / 0
04.12.2014, 16:07
    #38825092
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по функциям js
iskatelsql,

покажите как вы пишите в глобальную переменную.
И почему нельзя провести все необходимые действия с переменной text в самой функции onSuccess?
...
Рейтинг: 0 / 0
04.12.2014, 17:24
    #38825223
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по функциям js
авторJeStone
ну как, как t=text; :)

а вот в функцию все засунуть не догадался. работает.

Только всеже очень интересно, куда же этот return возвращал значение??

Вот что получилось: (слепил из примеров при помощи кувалды, перемменную оставил в коментах.)

Такое ощущение, что то, что получилось работает через три разных АПИ


По кнопке берет значение из файла, пишет куку, удаляет файл.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
const {Cu,Ci,Cc} = require("chrome");
const {OS} = Cu.import("resource://gre/modules/osfile.jsm", {});

/*
var t; // тут объявлял t
*/
var file = "c:\\c.txt";
var buttons = require('sdk/ui/button/action');
var tabs = require("sdk/tabs");


var button = buttons.ActionButton({
  id: "mozilla-link",
  label: "Visit Mozilla",
  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "64": "./icon-64.png"
  },
  onClick: handleClick
});

function handleClick(state) {

let promise = OS.File.read(file , { encoding: "utf-8" });
promise = promise.then(
  function onSuccess(text) {

/*
t=text; // пытался присвоить
*/

	var url = "http://www.example.com/";

	var cookieString = "your_key_name="+text+";domain=.example.com;";

	var cookieUri = Cc["@mozilla.org/network/io-service;1"]
    		.getService(Ci.nsIIOService)
    		.newURI(url, null, null);

	Cc["@mozilla.org/cookieService;1"]
    		.getService(Ci.nsICookieService)
    		.setCookieString(cookieUri, null, cookieString, null);
	

  }
);

/*
console.log(t); // ну и в консоль, а там undifined
*/

promise = OS.File.remove(file);

}

...
Рейтинг: 0 / 0
04.12.2014, 17:53
    #38825264
JeStone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по функциям js
iskatelsqlну как, как t=text; :)

В данном случае вы пишите в this.t, где this !== window
А извне onSuccess this === window
Конечно, неправильно использовать глобальные переменные в данном случае, но чтобы видеть x из-вне, надо писать window.t = text;
...
Рейтинг: 0 / 0
04.12.2014, 18:14
    #38825311
iskatelsql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по функциям js
Full message: ReferenceError: window is not defined

window в аддонах вроде как и нет, даже alert() просто так не вызвать, надо конструкцию городить :(
...
Рейтинг: 0 / 0
04.12.2014, 18:32
    #38825345
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите по функциям js
iskatelsql Только всеже очень интересно, куда же этот return возвращал значение?? это возвращаемое значение сохранится внутри promise и будет передано в колбэк следующего вызова then (если оный имеется).
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подскажите по функциям js / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]